1.线程的中断:使用的是interrupt()方法
线程在运行的时候受到了阻碍,那么可以使其在受阻状态强制回到运行状态,是线程中断现有的状态。
一般线程都是循环执行语句,要是改变循环的标识的话,就可以结束程序,但是这样会结束线程,但是中断的话,就是中止当前线程冻结状态,恢复正常执行。
使用了Interrupt()后,那么重新运行,也可能会再次进入冻结状态。那么就是发生了异常的那里。更改标识,那么最后就会正常的结束线程。
举例:
2.守护线程 利用:setDaemom(boolean bo)将线程标记为守护线程,当正在运行的程序都是守护线程的时候,java虚拟机会自动退出。
要在线程开启前,将线程标记为守护线程。
通俗的讲:后台线程,后台线程依赖于前台线程,当前台线程结束后,后台线程会自动的结束。
代码举例
当主线程运行结束后(前台线程),后台线程即使没有运行结束,也会结束,因为此时虚拟机已经退出。
Over出现了。Thread-1--run:34线程1才执行到34就结束了。这就可以说明,后台线程依赖于前台线程,只要前台线程一结束,那么守护线程就会被迫结束。
3.等待线程终止使用的是join()方法,必须放在线程开启开启之后,才能起作用。当正在运行的线程(B)执行到线程(A)的join方法,那么线程(B)就处于冻结状态。直到等到线程(A),运行结束后,那么线程B才能解决冻结状态。
4.可以设置线程的优先级:优先级是从1~10,系统中定义了三个优先级常量:MAX_PRIORITY(优先级10),MIN_PRIORITY(优先级5),NORM_PRIORITY(优先级1),优先级高的抢夺CPU的频率高,但是也会执行其他的优先级低的线程。使用setPriority(整数)方法设置线程的优先级。
例如设置优先级是2,setPriority(2)
5.停止当前执行的线程,然后运行其他的线程,把执行权让给其他线程。(yiled)
6.匿名线程
转载于:https://blog.51cto.com/3126217/1320709