Java多线程小结

时间:2021-01-04 21:13:52

多线程 

多线程是我们Java学习中必学的知识,在这里我们浅泛的理解一下多线程。

程序、进程、线程的区别是什么?

程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。
  进程(process)是程序的一次执行过程,或是正在运行的一个程序。
  线程(thread)进程可进一步细化为线程,是一个程序内部的一条执行路径。
 

多线程和单线程

单线程:一个程序里面只执行了一个线程,就叫单线程
多线程:一个程序里面只执行了多个线程,就叫多线程

调用多线程方法

调用多线程的时候,如果直接调用该类中的run()方法名字 就是普通调用了,和我们平时自定义的方法没有区别。所以需要调用 start()  启动线程。

注:

主线程:  main

  守护线程:  gc  (垃圾回收器)

public class Test01 {
public static void main(String[] args) {
//这里顺序调用 使用run方法,执行的就是普通方法
//Thread thread = new Test();
//thread.run();
//
//Thread thread2 = new Test();
//thread2.run();

Thread thread = new Test();
Thread thread2 = new Test();
//jvm 会用多线程的方法调用run方法
thread.start();
thread2.start();
//这个执行输出的时间不确定 可能是在上面的线程完成之前 也可能是之后 取决于是否抢到CPU
System.out.println("================");
//这里调用方法 取得当前线程的名字
System.out.println(thread.currentThread().getName());
}
}
class Test extends Thread{
public void run(){
for (int i = 0; i < 1000; i++) {
System.out.println("zhuxiancheng "+i);
}
}
}



在main中,我们可以见到先是  thread.start()  然后是 thread2.start() 最好才是输出"======="和线程名字,但是在运行的时候并不是按照顺序运行的,而是看谁能够抢到CPU运行时间,往往是交叉运行。

Java多线程小结

就像图片中的运行结果一样,先是运行时输出"==========="然后是执行线程0 而后是 线程1 再输出 线程名字,最后线程 0 和线程 1 交叉运行完成。此处的 0 和1 是机器默认给线程定义的名字。

线程什么时候开始执行并不确定,第一次运行可能是图中的顺序,但下一次执行就不一定还是这个顺序了。