【发布时间】:2020-09-11 16:02:07
【问题描述】:
class MyThread extends Thread{
public void run(){
print();
}
synchronized public void print() {
// for(int i = 0; i< )
System.out.println("Thread : " + Thread.currentThread().getName());
try{
Thread.sleep(5000);}
catch(InterruptedException e ){
}
}
}
public class MyClass {
public static void main(String args[]) throws InterruptedException {
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
t1.setName("A");
t2.setName("B");
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println("EOM");
}
}
程序的输出 -
ThreadA
ThreadB
立即打印两行 5 秒后
EOM
根据我的理解,其中一个线程应该进入 print() 并获取锁,并且仅在 5 秒后释放它,但这里两个线程都立即执行,然后在 5 秒后打印“EOM”。
【问题讨论】:
-
如果你想要锁类,你应该在静态方法上使用同步。
标签: java multithreading locking