62,614
社区成员
发帖
与我相关
我的任务
分享
public class TestLock {
private static TestLock tl = new TestLock();
private Object lock1 = new Object();
private Object lock2 = new Object();
public void func1() {
try {
System.out.println("fun1");
synchronized (lock1) {
System.out.println("获取lock1");
Thread.sleep(1000L);
synchronized (lock2) {
System.out.println("获取lock2");
Thread.sleep(1000L);
}
}
} catch (Exception e) {
}
}
public void func2() {
try {
System.out.println("fun2");
synchronized (lock2) {
System.out.println("获取lock2");
Thread.sleep(1000L);
synchronized (lock1) {
System.out.println("获取lock1");
Thread.sleep(1000L);
}
}
} catch (Exception e) {
}
}
public static void main(String[] args) {
new Thread() {
public void run() {
tl.func1();
}
}.start();
new Thread() {
public void run() {
tl.func2();
}
}.start();
}
}
这段程序就会造成死锁
多线程题目太多了,你可以自己做一个生产者消费者的程序,2个生产者线程,3个消费者线程,生产者每100毫秒生产1个,消费者每200毫秒消费1个,缓冲区能存放100个。