【Java学习】多线程2

2018-08-05 07:46:23来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Java多线程的安全问题:

由于多线程的代码块中可能有共享资源,因此,当一个线程刚好使用共享资源时,CPU让改线程被吊起,转而执行另外一个线程时,第二个线程又去使用共享资源,从而出现共享资源不一致的状况而引发错误。

Java提供了同步代码块和同步方法两种解决方案,很好的解决了这一问题。

synchronized (object)

{

//访问共享资源代码

}

参数object可以使任意一个对象,作用类似一个开关,当前线程执行到同步代码块时,会先判断object的状态,如果同步代码块未被某一线程执行,进入代码块,并且同时设置object的标志位,待同步代码块执行完毕,再次设置object的标志位,结束执行。如果代码块被某一线程执行,直接放弃CPU的执行权。对象的作用如同锁。

 

同步代码块方案的弊端:

多个线程需要判断锁,较为消耗资源。

同步方法就是给方法定义上添加synchronized关键字,同步方法使用的锁是this。

如果同步方法被static修饰,静态同步方法使用的锁不是this,是该方法所在类的字节码对象,即类名.class

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:SpringMVC框架二:SpringMVC与MyBatis整合

下一篇:集合框架