Thread.join(),源码的说明Waits for this thread to die.
即等待调用该方法的线程结束,再执行;主线程等待调用join方法的子线程执行结束后再继续执行。
B extends Thread
A extends Thread {
run(){
b.join();//等待B线程结束
//b.join(1000);//等待B线程结束或者1000ms超时
System.out.println("a线程继续执行!");
}
---------------
1. sleep() & interrupt()
线程A正在使用sleep()暂停着: Thread.sleep(100000);
如果要取消他的等待状态,可以在正在执行的线程里(比如这里是B)调用
a.interrupt();
令线程A放弃睡眠操作,这里a是线程A对应到的Thread实例
执行interrupt()时,并不需要获取Thread实例的锁定.任何线程在任何时刻,都可以调用其他线程interrupt().当sleep中的线程被调用interrupt()时,就会放弃暂停的状态.并抛出InterruptedException.丢出异常的,是A线程.
2.interrupt()只是改变中断状态而已
interrupt()不会中断一个正在运行的线程。这一方法实际上完成的是,在线程受到阻塞时抛出一个中断信号,这样线程就得以退出阻塞的状态。更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(InterruptedException),从而提早地终结被阻塞状态。
如果线程没有被阻塞,这时调用interrupt()将不起作用;否则,线程就将得到异常(该线程必须事先预备好处理此状况),接着逃离阻塞状态。
线程A在执行sleep,wait,join时,线程B调用A的interrupt方法,的确这一个时候A会有InterruptedException异常抛出来.但这其实是在sleep,wait,join这些方法内部会不断检查中断状态的值,而自己抛出的InterruptedException。
如果线程A正在执行一些指定的操作时如赋值,for,while,if,调用方法等,都不会去检查中断状态,所以线程A不会抛出InterruptedException,而会一直执行着自己的操作.当线程A终于执行到wait(),sleep(),join()时,才马上会抛出InterruptedException.
若没有调用sleep(),wait(),join()这些方法,或是没有在线程里自己检查中断状态自己抛出InterruptedException的话,那InterruptedException是不会被抛出来的
如果线程自己调用自己的interrupt()方法,那么只是设置了下状态值而已
http://macleo.iteye.com/blog/626283,还可以的一篇文,有时间继续看下
---------------------------
Reentrantlock相关
http://www.dewen.org/q/9077,lock,tryLock,tryLock(long timeout, TimeUnit unit),lockInterruptibly()的区别
http://www.cnblogs.com/MichaelPeng/archive/2010/02/12/1667947.html,Reentrantlock代码解析
分享到:
相关推荐
tread_master机制,主要介绍了zebra中的tread_master机制
C# Tread浅析
TREAD不能保证一个没有受害者的社会,但是TREAD可以通过提供上下文和态势感知来为公民提供制止暴力和财产犯罪的工具。 首先,TREAD将为行人提供一个移动应用程序,以创建路线,该路线将考虑当地的静态犯罪数据,...
tread是一个测试跑步者。 这个想法是,所有测试都应在单独的过程中运行。 它是什么? Tread是一个包含模式和文件夹的二进制文件。 它查找与目录中的模式匹配的文件,然后在单独的进程中以串行或并行方式运行它们。...
Tread-o-quest-6.1 “ Tread-o-quest 6.1”是一项激动人心的比赛,由3/4的团队与他们自制的机器人相互竞争,穿越充满障碍的充满挑战的赛道,与时间赛跑。 这是一个由Cyborg每年在NIT ROURKELA的技术盛会Innovision...
转子转速对短纤维增强工程胎胎面胶制备性能的影响,汪传生,张德伟,在短纤维增强工程胎胎面胶的混炼过程中,转子转速是影响其混炼胶性能的关键因素之一。因此,对比研究了不同的转子转速对短纤维增
linux 下pthread编程教程
语言:English 一个简单的插件,用于向网站添加警告弹出窗口。 轻按一下鼠标即可在任何网站上轻轻添加一个警告弹出窗口(或横幅)。 你为什么需要它? 例如,作为开发人员,我们经常需要检查生产环境中的内容,访问可...
WinCCflexible中如何组态位触发趋势(曲线).pdf
一个简单的插件,为网站添加警告弹出窗口。 轻按一下鼠标即可在任何网站上轻轻添加一个警告弹出窗口(或横幅)。 你为什么需要它? 例如,作为开发人员,我们经常需要检查生产环境中的内容,访问可随时播放实时数据...
attempts to open "Map.ved", a Tread Marks map file. Tread Marks maps will only work for MAP_SIZE == 1024. Also, the MULT_SCALE to view Tread Marks maps correctly is "0.25f". (www.TreadMarks.com) ...
System.out.println("正在启动 服务器!... ThreadTest tread = new ThreadTest(socket, num); tread.start(); System.out.println("客户号:" + num); } catch (IOException e) { e.printStackTrace(); } }
1) 胎面 (Tread) : 作为跟路面接触的部分, 通过摩擦使汽车, 具有驱动,制动等机能. 应具有良好的耐磨性, 能承受外部冲击, 生热少. 2) 胎体(Body Ply) : Tire 内部 帘线层(Cord)承受负荷, 耐冲击 ...
RT-Thread是一个源代码开放硬实时操作系统,有需要的朋友可以下载参考
这篇文章中有三点需要提前说明一下, 一:在android中有两种实现线程thread的方法: 一种是,扩展java.lang.Thread类 另一种是,实现Runnable接口 二:Thread类代表线程类,它的两个最主要的方法是: ...
用于ansys初学者掌握apdl命令流,包括静力分析和动力分析的各种问题求解说明,提高ansys建模分析问题的能力
创建和启动一个新线程, 在本例中09行创建了Tread对象后,Tread类的构造函数接受TreadMain的委托参数,在10行用Start()方法启动线程
DEM–FEM coupling simulations of the interactions between a tire tread and granular terrain
C#中实现动画的方法很多,可以根据图形本身变化而产生动画,也也可以定时显示不同的图像来产生动画...本实例使用for循环语句,结合线程类Tread产生动画效果,Tread类用于创建并控制线程,设置其优先等级并获取其状态。