线程——基本的线程同步操作(synchronized)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Nliki/article/details/80240591

Syschronized:

-         指定加锁对象:对给定对象加锁,进行同步代码前要获得给定对象的锁。

-         直接作用于实例方法:相当于对当前实例加锁,进行同步代码前要获得当前实例的锁

-         直接作用于静态方法:相当于对当前类加锁,进行同步代码前要获得当前类的锁。

如果我们将上面类的synchronized方法注销,然后运行会发现值小于520。



上面的synchronized方法,我们不注销,我们注销t1.join()和t2.join()运行下同样发现值小于520。(这里join方法是等待t1、t2结束完了,我们在打印,如果注销了,等于t1 t2还未结束我们就打印了,就会导致值小于520.)


线程对两个不同的对象进行加锁,也会导致值小于520


对于上述这个类我们只需将synchronized 变成静态方法或者保证线程t1和t2是同一个对象即可。








猜你喜欢

转载自blog.csdn.net/Nliki/article/details/80240591