Java学习笔记8(线程)

本文解析volatile关键字在Java中的作用,防止线程间数据竞争,并通过实例展示如何模拟烧水泡茶过程中的并发控制,优化线程调度。

目录

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值