-
如何正确停止线程 一、错误一:stop()方法 1、not stop:stop()方法会使线程戛然而止 2、使程序突然中止,无法完成完整的业务步骤,也无法进行清理工作 二、错误二:interrupt()方法 1、interrupt()方法只能设置interrupt标志位(且在线程阻塞情况下,标志位会被清除,更无法设置中断标志位),无法停止线程 三、正确方法:设置退出标志 1、使用退出标志位来停止while循环 2、完成最后一次业务后跳出while循环后,之后进行一些清理工作 在异常抛出之前,线程刚好执行了Thread.sleep(1000); 然后在主线程main中就是休眠的这一秒中继续执行了thread.interrupt(); 因为thread是在休眠之中的,所以在 try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } 中抛出了异常,也就是说这时候的因为sleep中采用的interrupt()中断方法已经被处理了,就是理解为回归正常, 所以以后的isInterrupt()方法判断的都是没有中断的了,就是返回false。因为它再次循环就是在执行了异常之后,所以此时isInterrupt()都返回false interrupt()方法初衷并不是用来停止线程(静态方法,返回布尔值)查看全部
-
广为流传的错误停止线程的方法:interrupt() interrupt()--初衷并不是用于停止线程 在调用sleep()或者join()的时候,一旦其他线程调用interrupt(),它将会收到一个异常,这些被阻塞的线程因为某些原因需要被唤醒,比如外部发生了中断而需要响应,这时就采用抛出异常的方式来使其作出响应。总而言之,interrupt()方法并不能正确地停止进程查看全部
-
在线程中,停止线程的方法:设置旗标 使用volatile 定义boolean keeprunning=true,通过设置标志变量keeprunning,来结束线程。 如本文:volatile boolean keepRunning=true; 这样做的好处是:使得线程有机会使得一个完整的业务步骤被完整地执行,在执行完业务步骤后有充分的时间去做代码的清理工作,使得线程代码在实际中更安全。查看全部
-
stop()方法本身是Java1.0版本提供的一个停止线程的方式。 官方标注为:Deprecated。所以对我们来说不是一个正确的停止线程的方式。 所以不能使用stop()方法来停止线程。查看全部
-
join方法可中断其它线程的执行,等待调用join方法的线程结束,即使是主线程main也会被中断 join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。查看全部
-
volatile关键字:保证了线程可以正确的读取其他线程的值,被该关键字修饰的变量a没有拷贝,保证了每一个线程对于该成员变量的值的改变都能存储到主存中,即每个线程的这个变量a的值都是一致的。因此它的性能也比synchronized要差一些。 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。查看全部
-
1.加入join是为了让舞台线程最后停止,如果不加有可能舞台线程结束,军队线程还未停止,就好比导演喊停,演员还在演!可以在join后面加入测试语句System.out.println("舞台结束!");,然后去掉或者保留join观察效果。 2.volatile 关键字 保证了线程可以正确地读取其他线程写入的值,如果不写成volatile,由于可见性的问题,当前线程有可能不能读到这个值//可见性JMM(JAVA内存模型)happens-before原则、可见性原则 用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的值查看全部
-
类Thread 接口(interface)Runnable有一个共同的方法 run()查看全部
-
线程共享进程的资源查看全部
-
进程:1.程序的执行过程-- 动态的2.持有资源(共享内存 共享文件)和线程 线程 1.是系统中最小的执行单元 2.线程的交互(互斥 同步),如果把一个班级看成一个进程,那么每一个学生可以看成一个线程。查看全部
-
线程开始!查看全部
-
隋唐演义三个对象:军队-ArmyRunnable;英雄人物-KeyPersonThread;舞台-Stage查看全部
-
http://img1.sycdn.imooc.com//55c094680001a72612800720-120-68.jpg查看全部
-
http://img1.sycdn.imooc.com//55c094430001dc3a12800720-120-68.jpg查看全部
-
类Thread 接口(interface)Runnable有一个共同的方法 run()查看全部
举报
0/150
提交
取消