public void main()
{
Runnable runnable = new ShareVariableRunnable();
Thread[] threads = new Thread[3];
for (int i = 0; i < 3; i++) {
threads[i] = new Thread(runnable, "RandomThread:" + i);
}
for (Thread thread : threads) {
thread.start();
}
while (threads[0].isAlive() || threads[1].isAlive() || threads[2].isAlive()) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("线程1、2、3结束");
}
class ShareVariableRunnable implements Runnable {
public int state = 0;
private int count = 100;
private int curr = 0;
@SneakyThrows
@Override
public void run() {
int currThread = 0;
synchronized (this) {
currThread = curr;
curr += 10;
}
for (int i = 0; i < 10; i++) {
Thread.sleep(200);
System.out.println("" + Thread.currentThread().getName() + ",count:" + currThread++);
}
if (curr < count) {
run();
} else {
state = 1;
}
}
}