java 初学多线程

什么是进程?

例如:

这些每个都是一个进程,每个进程都有好多功能,这些功能同时运行走的就是线程,多线程

一个进程会有多个线程或者一个线程,是一对多的关系

进程:一个程序进入内存就可以叫做进程

线程:线程是进程的一个执行单元(功能),可以多个线程一起执行

程序运行原理

java是抢占式调度,就是cpu会随机分配时间运行哪个线程时间长一点,执行的多一些。cpu会高速的在每个线程之间来回切换,但是某个时刻只能执行一个线程,

多线程并不能提高程序的运行速度,但是可以提高程序的运行效率,让cpu的使用率更高

分时调度:cpu平均分配时间,每个线程的时间是一样的

主线程

就是我们常用的main()方法,当JVM启动后,必然有一个方法从mian方法开始,到结束。才能执行mian下面的别的方法,依次执行。

Treah类

构造方法

常用方法

写一个新的类,然后继承Thread类,声明这是一个新的线程,将要执行的程序写在新的类里面,方法名run,在mian方法里用start调用

 1 package com.oracle.Demo02;
 2 
 3 public class Demo1 extends Thread {
 4     //JVM去找OS开了2条路径
 5     //对于CPU来说就有了2条路径,这2条路径都会被CPU执行,CPU有自己选择的权利,所以就有了随机性,
 6     //也可以理解为2个线程在抢夺CPU的资源(时间)
 7     public void run(){
 8         for(int i=0;i<100;i++){
 9             System.out.println("这是新建的线程"+i);
10         }
11     }
12 }
 1 package com.oracle.Demo02;
 2 
 3 public class test {
 4 
 5     public static void main(String[] args) {
 6         Demo1 de = new Demo1();
 7         //开启线程。start方法会在后台调用run方法
 8         de.start();
 9         for(int i=0;i<100;i++){
10             System.out.println("这是主线程"+i);
11         }

练习:

给我创建三个线程,一个方法是打印1000以内的水仙花数,
一个方法是打印1000以内的所有偶数,一个方法是循环打印1000个数

 1 package com.oracle.Demo02;
 2 
 3 public class Demo02 extends Thread {
 4     public void run(){
 5         for(int i=1;i<=1000;i++){
 6             int a = i%10;
 7             int b = (i/10)%10;
 8             int c = i/100%10;
 9             if((a*a*a+b*b*b+c*c*c)==i){
10                 System.out.println("水仙花数"+i);
11 
12             }
13         }
14     }
15 }
 1 package com.oracle.Demo02;
 2 
 3 public class Demo03 extends Thread{
 4     public void run(){
 5         for(int i=1;i<=100;i++){
 6             if(i%2==0){
 7                 System.out.println("偶数"+i);
 8             }
 9         }
10     }
11 }
package com.oracle.Demo02;

public class test {

    public static void main(String[] args) {
        Demo02 de = new Demo02();
        de.start();   创建第一个线程
        Demo03 dee = new Demo03();
        dee.start();    创建第二个线程
        for(int i =0;i<=1000;i++){    主线程
            System.out.println(i);
        }
        
    }

}

猜你喜欢

转载自www.cnblogs.com/wangrongchen/p/9223724.html