Thread 详解

Thread 简述

  • public class Thread extends Object implements Runnable
  • 线程是程序中的执行线程,Java 虚拟机允许应用程序并发地运行多个执行线程。 
  • 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。
  • 创建新执行线程常规的有两种方法。一种方法是将类声明为 Thread 的子类,该子类重写 Thread 类的 run 方法。另一种方法是声明实现 Runnable 接口的类,该类然后实现 run 方法。具体可以参考《Java 线程基础篇》
  • 每个线程都有一个标识名,多个线程可以同名,如果线程创建时没有指定标识名,就会为其生成一个新名称。 

守护线程 VS 非守护线程

1.  Java 将线程分为守护线程与非守护线程

2. 一条守护线程扮演着非守护线程辅助者的角色,并且会在应用程序最后一条非守护线程消失之后自动死亡,因此应用程序才能终止

非守护线程

1. 非守护线程也叫用户线程,包括常规的用户线程(如main主线程),以及用于处理GUI事件的事件调度线程,Java虚拟机在它所有非守护线程已经离开后自动离开。

2、开启的线程默认都是非守护线程

守护线程

1. 守护线程则是用来服务用户线程的,比如说GC线程。

2. 如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去,于是会自动结束。

3、public final void setDaemon(boolean on):将该线程标记为守护线程或用户线程,为true则表示守护线程;当正在运行的线程都是守护线程时,Java 虚拟机退出;该方法必须在启动线程前调用,但是使用线程池时,可以在run方法或者call方法中调用。




猜你喜欢

转载自blog.csdn.net/wangmx1993328/article/details/80837755