nir*_*esh 1 java multithreading synchronized
可以说我 在课堂上有方法synchronized hi(){}和synchronized hello(){}方法ABC.和两个线程t1和t2正在执行t1.hi()和t2.hello()分别.它们可以同时执行还是存在任何问题?
不,同一对象中的2个同步方法不能同时执行:
https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html
来自文档:
对同一对象的两个同步方法的调用不可能进行交错.当一个线程正在为对象执行同步方法时,所有其他线程调用同一对象的同步方法(暂停执行)直到第一个线程完成对象.
这里的关键是锁定对象.正如托马斯指出,想必t1和t2是同一类的不同实例,使他们能够实际执行hi(),并hello()兼任.
如果t1并且t2只是两个不同的线程调用hi()并且hello()在同一个对象上,则上述语义保持为真,并且这两个方法不能并行执行.