运行老是不完整,不知道是不是在哪里死锁了?请大家帮忙看看。public class ThreadTest2 { public volatile static int a1 = 0;
public volatile static int a2 = 0;
static Object obj = new Object(); public static void main(String[] args) {
Thread11 t1 = new Thread11();
Thread22 t2 = new Thread22();
t1.start();
t2.start();
}}
class Thread11 extends Thread{

public void run(){
System.out.println("thread1 enter");

for (int i = 0; i < 100; i++) {
if (ThreadTest2.a1-ThreadTest2.a2>5) {
try {
synchronized (ThreadTest2.obj) {
ThreadTest2.obj.wait();
ThreadTest2.obj.notifyAll();
}

} catch (InterruptedException e) {}
}
++ThreadTest2.a1 ;
System.out.println("a1---"+ThreadTest2.a1);
}
}
}
class Thread22 extends Thread{

public void run(){
for (int i = 0; i < 100; i++) {
if (ThreadTest2.a2-ThreadTest2.a1>5) {
try {
synchronized (ThreadTest2.obj) {
ThreadTest2.obj.notifyAll();
ThreadTest2.obj.wait();
}

} catch (InterruptedException e) {}
}
++ThreadTest2.a2;
System.out.println("a2---"+ThreadTest2.a2);
}

}
}

解决方案 »

  1.   

    运行结果老是不完整,其中之一为:(之后程序一直不动,非手动不能退出)
    thread1 enter
    a1---1
    a1---2
    a1---3
    a1---4
    a1---5
    a1---6
    a2---1
    a2---2
    a2---3
    a2---4
    a2---5
    a2---6
    a2---7
    a2---8
    a2---9
    a2---10
    a2---11
    a2---12
    a1---7
    a1---8
    a1---9
    a1---10
    a1---11
    a1---12
    a1---13
    a1---14
    a1---15
    a1---16
    a1---17
    a1---18
    a2---13
    a2---14
    a2---15
    a2---16
    a2---17
    a2---18
    a2---19
    a2---20
    a2---21
    a2---22
    a2---23
    a2---24
    a1---19
    a1---20
    a1---21
    a1---22
    a1---23
    a1---24
    a1---25
    a1---26
    a1---27
    a1---28
    a1---29
    a1---30
    a2---25
    a2---26
    a2---27
    a2---28
    a2---29
    a2---30
    a2---31
    a2---32
    a2---33
    a2---34
    a2---35
    a2---36
    a1---31
    a1---32
    a1---33
    a1---34
    a1---35
    a1---36
    a1---37
    a1---38
    a1---39
    a1---40
    a1---41
    a1---42
    a2---37
    a2---38
    a2---39
    a2---40
    a2---41
    a2---42
    a2---43
    a2---44
    a2---45
    a2---46
    a2---47
    a2---48
    a1---43
    a1---44
    a1---45
    a1---46
    a1---47
    a1---48
    a1---49
    a1---50
    a1---51
    a1---52
    a1---53
    a1---54
    a2---49
    a2---50
    a2---51
    a2---52
    a2---53
    a2---54
    a2---55
    a2---56
    a2---57
    a2---58
    a2---59
    a2---60
    a1---55
    a2---61
    a1---56
    a1---57
    a1---58
    a1---59
    a1---60
    a1---61
    a1---62
    a1---63
    a1---64
    a1---65
    a1---66
    a1---67