Java对Instant 说明为 simple beautiful strong immutable thread-safe:
简单、漂亮、坚固、不可变的线程安全
package org.jeecg.config.mybatis;
import org.apache.poi.ss.formula.functions.T;
import java.time.Instant;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.concurrent.TimeUnit;
/**
* @author muyou
*/
public class treadForCpuCache {
private static volatile boolean initFlag =false;
public static void main(String[] args) throws InterruptedException {
Instant now = Instant.now();
System.out.println(now.atZone(ZoneId.systemDefault()));
Instant instant = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));
System.out.println(instant);
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("等待数据准备。1");
/* 设置死循环*/
while (!initFlag){}
System.out.println("============ 线程1执行完成 =============");
System.out.println("r1 time consumption: " + ChronoUnit.SECONDS.between(now, Instant.now()) + " seconds");
System.out.println("r1 time consumption: " + ChronoUnit.MILLIS.between(now, Instant.now()) + " millis");
}
}).start();
/* 线程休眠2秒钟*/
Thread.sleep(2000);
new Thread(new Runnable() {
@Override
public void run() {
prepareDate();
}
}).start();
}
public static void prepareDate(){
System.out.println("线程2准备中。");
initFlag = true;
System.out.println("线程2执行完成");
}
}
2019-07-04T15:17:33.645+08:00[Asia/Shanghai]
2019-07-04T15:17:33.736Z
等待数据准备。1
线程2准备中。
线程2执行完成
============ 线程1执行完成 =============
r1 time consumption: 2 seconds
r1 time consumption: 2105 millis