import java.util.*;
public class ThreadTest {
public static void main(String[] args) throws InterruptedException {
new Monitor().start();
new MyThread().launch();
}
}
class MyThread extends Thread {
//被争抢资源
public static Integer i = 0;
//线程容器
public static List<MyThread> list = new ArrayList<MyThread>();
//启动50个线程
public void launch() {
for (int i = 0; i < 50; i++) {
MyThread temThread = new MyThread();
list.add(temThread);
temThread.start();
}
}
@Override
public void run() {
try {
//增大争抢强度
Thread.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (MyThread.i) {
//主要的任务
MyThread.i++;
}
}
}
class Monitor extends Thread {
public int n = 0;
@Override
public void run() {
while (true) {
try {
//心跳1秒
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//判断线程是否结束
boolean isOver = true;
for (MyThread thread : MyThread.list) {
// 如果有一个活着就没有结束
if (thread.isAlive()) {
isOver = false;
}
}
//输出格式化
if (n % 10 == 0 && n != 0) {
System.out.println();
}
//结果输出
if (isOver) {
System.out.print(n++ + "-" + MyThread.i + "; ");
synchronized (MyThread.i) {
MyThread.i = 0;
}
MyThread.list = new ArrayList<MyThread>();
new MyThread().launch();
}
}
}
}