synchronized
方法在实例级别工作。类的每个实例都有自己的锁。每次
synchronized输入实例的任何方法都将获取该锁。这样可以防止多个线程 在同一个实例上
调用
synchronized方法(请注意,这还可以防止在同一个实例上调用 不同的 方法)。
synchronized
现在,由于您有两个类实例,因此每个实例都有自己的锁。没有什么可以阻止两个线程同时在其自己的实例上运行。
如果确实想防止这种情况,则可以在
synchronized(obj)里面有一个块
run(),
obj该类在两个类的实例之间共享:
class MyThread2 implements Runnable { private static final Object lock = new Object(); ... public void run() { synchronized(lock) { ... } }}


