1.volatile关键字的作用
保证了变量的可见性(visibility)。被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象。
2.Java程序模拟烧水泡茶最优工序
import java.util.Date;
public class Tea implements Runnable{
static Date date = new Date();
public static void main(String[] args) throws Exception{
HeatUpWater h1 = new HeatUpWater();
WashCup w1 = new WashCup();
Tea m1 = new Tea();
Thread t1 = new Thread(h1);
Thread t2 = new Thread(w1);
Thread t3 = new Thread(m1);
try{
t1.start();
t2.start();
t2.join();
t1.join();
}catch (Exception e){
System.out.println("Error!");
}
t3.start();
}
public void run(){
System.out.println(date+" 正在泡茶");
try{
Thread.sleep(1000);
}catch (Exception e){}
}
}
class HeatUpWater implements Runnable{
static Date date = new Date();
public void run(){
int time = 10;
while(time != 0){
System.out.println(date+" 正在烧水");
time--;
try{
Thread.sleep(1000);
}catch (Exception e){
System.out.println("Heat up water is in the Error!");
}
}
}
}
class WashCup implements Runnable{
static Date date = new Date();
public void run(){
int time = 5;
while(time != 0){
System.out.println(date+" 正在洗茶杯");
time--;
try{
Thread.sleep(1000);
}catch (Exception e){
}
}
}
}