黑马程序员之《线程的一般方法》

1.线程的中断:使用的是interrupt()方法

   线程在运行的时候受到了阻碍,那么可以使其在受阻状态强制回到运行状态,是线程中断现有的状态。

   一般线程都是循环执行语句,要是改变循环的标识的话,就可以结束程序,但是这样会结束线程,但是中断的话,就是中止当前线程冻结状态,恢复正常执行。

   使用了Interrupt()后,那么重新运行,也可能会再次进入冻结状态。那么就是发生了异常的那里。更改标识,那么最后就会正常的结束线程。

举例:

102515101.jpg


2.守护线程   利用:setDaemom(boolean bo)将线程标记为守护线程,当正在运行的程序都是守护线程的时候,java虚拟机会自动退出。

    要在线程开启前,将线程标记为守护线程。

    通俗的讲:后台线程,后台线程依赖于前台线程,当前台线程结束后,后台线程会自动的结束。

代码举例

当主线程运行结束后(前台线程),后台线程即使没有运行结束,也会结束,因为此时虚拟机已经退出。

   Over出现了。Thread-1--run:34线程1才执行到34就结束了。这就可以说明,后台线程依赖于前台线程,只要前台线程一结束,那么守护线程就会被迫结束。


102732333.jpg

3.等待线程终止使用的是join()方法,必须放在线程开启开启之后,才能起作用。当正在运行的线程(B)执行到线程(A)的join方法,那么线程(B)就处于冻结状态。直到等到线程(A),运行结束后,那么线程B才能解决冻结状态。

103155975.jpg

4.可以设置线程的优先级:优先级是从1~10,系统中定义了三个优先级常量:MAX_PRIORITY(优先级10),MIN_PRIORITY(优先级5),NORM_PRIORITY(优先级1),优先级高的抢夺CPU的频率高,但是也会执行其他的优先级低的线程。使用setPriority(整数)方法设置线程的优先级。

  例如设置优先级是2,setPriority(2)

103354730.jpg

5.停止当前执行的线程,然后运行其他的线程,把执行权让给其他线程。(yiled)

6.匿名线程

103732161.jpg

你可能感兴趣的:(java,线程,前台)