Java并发程序基础

Thread.stop()

直接终止线程,并且会立即释放这个线程所持有的锁。

Thread.interrupt()

并不会是线程立即退出,而是给线程发送一个通知,告知目标线程,有人希望你退出啦,至于目标线程接到通知后会如何处理,则完全由目标线程自行决定。

Thread.sleep()

使当前线程休眠若干时间,如果线程sleep时被中断,就会产生InterruptedException

wait()和notify()方法不属于Thread,而是Object

T1

T2

获取object监视器

 

Object.wait()

 

释放object监视器

 

 

获得object监视器

 

Object.notify()

等待object监视器

释放object监视器

重获object监视器

 

继续执行

 

Object.wait()和Thread.sleep()都可以让线程仍待若干时间,除了wait()可以被唤醒外,另一个主要区别就是wait()方法会释放目标对象的锁,而sleep()方法不会释放任何资源。

join()方法的本质是让调用线程wait()在当前线程对象实例上。

yield()会使当前线程让出CPU,但让出CPU后,还会进行CPU资源的争夺。

volatile关键字声明一个变量的时候,等于告诉虚拟机,这个变量极有可能被某些程序或者线程修改。为了确保这个变量被修改后,应用程序范围内的所有线程都能够看到这个改动,虚拟机就必须采用一些特殊的手段,保证这个变量的可见性等他点,但是并不能替代锁,也无法保证一些复合操作的原子性。

转载于:https://www.cnblogs.com/yueyanglou/p/5182301.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值