package com.ethan.kongzhong;
public class Test1 implements Runnable {
private Integer monitor = 0;
// private int i =0;
public static void main(String[] args){
System.out.println("begin:"+(System.currentTimeMillis()/1000));
/*模拟处理16行日志,下面的代码产生了16个日志对象,当前代码需要运行16秒才能打印完这些日志。
修改程序代码,开四个线程让这16个对象在4秒钟打完。
*/
Test1 t = new Test1();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
public void run() {
for(int i=0;i<16;i++){ //这行代码不能改动
// for(;i<16;i++) {
synchronized(monitor) {
i = monitor;
monitor++;
}
final String log = ""+(i+1);//这行代码不能改动
{
Test1.parseLog(log);
}
i = monitor-1;
//i++;
}
}
//parseLog方法内部的代码不能改动
public static void parseLog(String log){
try {
//1秒后不一定立马执行,得等分配到处理器。但1秒后会释放锁。
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName()+log+":"+(System.currentTimeMillis()/1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Thread.sleep小感
最新推荐文章于 2021-02-16 08:39:40 发布