目录
1.voliatile关键字有什么作用?
2.Java模拟烧水泡茶最优工序
1.voliatile关键字有什么作用?
- 随着JVM的优化,线程可以把猪村变量保存在寄存器(工作内存)中操作,线程结束再与主存变量进行同步,然而,当线程没有执行结束就发生了互换这就可能造成一个线程再主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中变量值的副本,造成数据的不一致。voliatile关键字指示JVM这个变量是不稳定的,每次使用它都要到主存中进行读取。
2.Java模拟烧水泡茶最优工序

class t2 extends Thread{
public void run(){
System.out.println("洗茶壶");
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("洗茶杯");
try{
Thread.sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("拿茶叶");
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
class t1 implements Runnable{
public void run(){
System.out.println("洗水壶");
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("烧水");
try{
System.out.println("剩余15分钟");
new t2().start();
for(int i = 1; i < 15; i++){
Thread.sleep(100);
System.out.println("剩余" + (15-i) + "分钟");
}
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("泡茶");
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
public class Water {
public static void main(String[] args){
new t1().run();
}
}
运行结果如下:
洗水壶
烧水
剩余15分钟
洗茶壶
洗茶杯
剩余14分钟
剩余13分钟
拿茶叶
剩余12分钟
剩余11分钟
剩余10分钟
剩余9分钟
剩余8分钟
剩余7分钟
剩余6分钟
剩余5分钟
剩余4分钟
剩余3分钟
剩余2分钟
剩余1分钟
泡茶
进程已结束,退出代码0
本文解析volatile关键字在Java中的作用,防止线程间数据竞争,并通过实例展示如何模拟烧水泡茶过程中的并发控制,优化线程调度。
24万+

被折叠的 条评论
为什么被折叠?



