这与我之前的问题类似,因为我仍然不清楚synchronized关键字。同步性能
这次我会把它缩短。
private int count = 0;
synchronized void increment() {
count++;
}
count是一个实例变量,它在2个线程中共享。
如果线程T1和T2试图增量次数和OS给T1机会增加数第一: -
T1采用了锁,原子递增计数,花时间增量次数是1分钟(考虑)包括时间来获得锁。
但是线程t2呢,它必须等到锁定释放。 锁定释放后,t2现在增加原子计数,这也需要1分钟。
所以同步给出的正确性,但它也需要时间来执行。线程是为了在较少的时间内完成工作,所以为什么要在线程中使用同步它有什么用处。
我的理解是否正确?
你有固定的原子性,但没有知名度'count'应该是'volatile' –
它的喜欢,你可以使用更多的人来完成在较短的时间了一些工作,但也有少数只有人员可以在给定时间完成的任务(同步修复了解关键部分的内容)。 –
@NitinDandriyal你可能会想到其他语言。根据JVM规范,在另一个线程中可以看到具有与另一个线程的before-before关系的线程中的动作。并且在同一个监视器上进行同步创建了这种发生之前的关系。访问相同的易失性变量也可以。 –