volatile关键字有什么作用
一般来说,多线程环境下各线程之间共享的变量都应该加volatile修饰,来指示JVM这个变量是不稳定的,每次使用它都需要到主存中进行读取。其不稳定主要是由于在多线程程序中,由于多核可见性受限,核心操作的是寄存器中的副本,导致数据不同步。
编写Java程序模拟烧水泡茶最优工序
class ThreadA implements Runnable{
int t = 0;
Thread tb = new Thread(new Runnable() {
int t = 1;
@Override
public void run() {
while (t<6) {
if(t == 1) System.out.println("第"+t+"min:开始洗茶壶");
else if (t == 2) {
System.out.println("第"+t+"min:洗茶壶完成\n" +"第"+t+"min:开始洗茶杯");
}
else if (t == 4) {
System.out.println("第"+t+"min:洗茶杯完成\n"+"第"+t+"min:开始拿茶叶");
}
else if (t == 5) {
System.out.println("第"+t+"min:拿茶叶完成");
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
t++;
}
}
});
public void run() {
while (t <= 16 ) {
if (t == 0) System.out.println("第"+t+"min:开始洗水壶");
else if (t == 1) {
System.out.println("第"+t+"min:洗水壶完成\n"+"第"+t+"min:开始烧水");
tb.start();
}
else if (t == 16) {
System.out.println("第"+t+"min:泡茶");
}
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
t++;
}
}
}
public class Tea {
public static void main(String[] args) {
ThreadA tta = new ThreadA();
Thread ta = new Thread(tta);
ta.start();
}
}