50,541
社区成员
发帖
与我相关
我的任务
分享
public class Test {
private int i = 0;
private Object object = new Object();
volatile static boolean flag=true;
public static void main(String[] args) {
Test test = new Test();
Thread thread1 = test.new MyThread("Thread-1");
Thread thread2 = test.new MyThread("Thread-2");
thread1.start();
thread2.start();
}
class MyThread extends Thread {
MyThread(String name) {
super(name);
}
@Override
public void run() {
while (flag) {
synchronized (object) {
i++;
System.out.println("i:" + i);
System.out.println("线程" + Thread.currentThread().getName() + "进入睡眠状态");
try {
Thread.currentThread();
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程" + Thread.currentThread().getName() + "睡眠结束");
i++;
System.out.println("i:" + i);
flag = false;
}
}
}
}
}
synchronized (object) {
flag = false;
i++;
System.out.println("i:" + i);
System.out.println("线程" + Thread.currentThread().getName() + "进入睡眠状态");
try {
.......
}
结构就是这样了。
i:1
线程Thread-1进入睡眠状态
线程Thread-1睡眠结束
i:2
synchronized (object) {
flag = false;
i++;
System.out.println("i:" + i);
System.out.println("线程" + Thread.currentThread().getName() + "进入睡眠状态");
try {
.......
}
结果就是这样了。
i:1
线程Thread-1进入睡眠状态
线程Thread-1睡眠结束
i:2