篇首语:本文由编程笔记#自由互联小编为大家整理,主要介绍了Java学习多线程2相关的知识,希望对你有一定的参考价值。Java多线程的安全问题:由于多线程的代码块中可 篇首语:本文
篇首语:本文由编程笔记#自由互联小编为大家整理,主要介绍了Java学习多线程2相关的知识,希望对你有一定的参考价值。
Java多线程的安全问题:
由于多线程的代码块中可能有共享资源,因此,当一个线程刚好使用共享资源时,CPU让改线程被吊起,转而执行另外一个线程时,第二个线程又去使用共享资源,从而出现共享资源不一致的状况而引发错误。
Java提供了同步代码块的解决方案,很好的解决了这一问题。
synchronized (object)
{
//访问共享资源代码
}
参数object可以使任意一个对象,作用类似一个开关,当前线程执行到同步代码块时,会先判断object的状态,如果同步代码块未被某一线程执行,进入代码块,并且同时设置object的标志位,待同步代码块执行完毕,再次设置object的标志位,结束执行。如果代码块被某一线程执行,直接放弃CPU的执行权。对象的作用如同锁。
同步代码块方案的弊端:
多个线程需要判断锁,较为消耗资源。