JAVA中的实例方法同步

时间:2015-11-07 21:13:44

标签: java multithreading synchronization synchronized

假设有两个主题A和B。有一个对象有两个同步方法dothisOne和dothisTwo,它们应该在调用程序中按顺序执行(dothisOne ---> dothisTwo)。两个线程都必须遵循相同的调用序列(dothisOne ---> dothisTwo)。假设在执行dothisOne时启动新鲜线程和第一线程A锁定对象。一旦它完成dothisOne并且控制出来...... ThreadB启动dothisOne(或)是否有机会100%保证线程A将用于dothisTwo?这个问题与实例方法有关。如果它是类方法(静态),我相信threadA会用于dothisTwo

1 个答案:

答案 0 :(得分:3)

  

ThreadB启动dothisOne(或)是否有机会100%保证线程A将用于dothisTwo?

完全没有保证。我怀疑更可能线程A将进入doThisTwo,因为基本上退出监视器并重新输入它之间没有什么需要做的 - 它不需要被重新安排或任何事情。但不,它可以以任何一种方式发生。

  

如果是类方法(静态),我相信threadA会用于dothisTwo

Nope - 同步不关心实例方法与静态方法。静态和实例同步方法的不同之处在于它们隐式同步哪个监视器,但这就是全部。

基本上,如果您希望将两件事作为一个单元(在同步方面)发生,则需要围绕这对操作进行同步,而不是仅依次对每个操作进行同步。