大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java多線程編程概述
Java多線程的安全問題
Java多線程同步
Java多線程間的通信
Java線程Lock
Java多線程管理
保障線程安全的設計技術
Java鎖的優化及注意事項
Java多線程集合
【Java多線程】單例模式與多線程

Java volatile關鍵字的作用

volatile關鍵字的作用使變量在多個線程之間可見。

package com.wkcto.volatilekw;

/**
 * volatile的作用可以強制線程從公共內存中讀取變量的值,而不是從工作內存中讀取
 * Author: 老崔
 */
public class Test02 {
    public static void main(String[] args) {
        //創建PrintString對象
        PrintString printString = new PrintString();

        //開啟子線程,讓子線程執行printString對象的printStringMethod()方法
        new  Thread(new Runnable() {
            @Override
            public void run() {
                printString.printStringMethod();
            }
        }).start();

        //main線程睡眠1000毫秒
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("在main線程中修改打印標志");
        printString.setContinuePrint(false);
       //程序運行,查看在main線程中修改了打印標志之后 ,子線程打印是否可以結束打印
        //程序運行后, 可能會出現死循環情況
        //分析原因:  main線程修改了printString對象的打印標志后, 子線程讀不到
        //解決辦法: 使用volatile關鍵字修飾printString對象的打印標志.
        //      volatile的作用可以強制線程從公共內存中讀取變量的值,而不是從工作內存中讀取
    }

    //定義類打印字符串
    static class  PrintString{
        private volatile boolean continuePrint = true;

        public PrintString setContinuePrint(boolean continuePrint) {
            this.continuePrint = continuePrint;
            return this;
        }

        public void printStringMethod(){
            System.out.println(Thread.currentThread().getName() + "開始....");
            while ( continuePrint ){

            }
            System.out.println(Thread.currentThread().getName() + "結束++++++++++++++");
        }
    }
}

volatile與synchronized比較

● volatile關鍵字是線程同步的輕量級實現,所以volatile性能肯定比synchronized要好; volatile只能修飾變量,而synchronized可以修飾方法,代碼塊. 隨著JDK新版本的發布,synchronized的執行效率也有較大的提升,在開發中使用sychronized的比率還是很大的。

● 多線程訪問volatile變量不會發生阻塞,而synchronized可能會阻塞。

● volatile能保證數據的可見性,但是不能保證原子性; 而synchronized可以保證原子性,也可以保證可見性。

● 關鍵字volatile解決的是變量在多個線程之間的可見性; synchronized關鍵字解決多個線程之間訪問公共資源的同步性。

全部教程
主站蜘蛛池模板: 国产羞羞事1000部在线观看 | 伊人网综合视频 | 亚洲国产97在线精品一区 | 国产精品视频一区二区猎奇 | 日日摸天天摸狠狠摸视频 | 91长腿女神清纯大又嫩在线 | 欧美综合精品一区二区三区 | 国产精品视频网站 | 欧美高清性刺激毛片 | 国产成人麻豆精品 | 日本三级欧美三级 | 精品久久久久久久99热 | 国产女人伦码一区二区三区不卡 | 精品欧美日韩一区二区三区 | 亚洲国产精品成人午夜在线观看 | 青草视频久久 | 激情婷婷网 | 偷自拍视频区综合视频区 | 久久亚洲国产午夜精品理论片 | 欧美aaa大片 | 国产精品一区二区久久沈樵 | 日韩欧美视频一区二区在线观看 | 大美女久久久久久j久久 | 亚洲视频在线一区二区 | 国产伦精品一区二区三区高清 | 国产精品免费观看网站 | 色网站视频 | 九九热这里只有国产精品 | 国产亚洲精品97在线观看 | 免费久福利视频在线观看 | 成人毛片免费观看视频大全 | 国产精品一区伦免视频播放 | 日本不卡视频在线 | 一级女性全黄生活片免费 | 777奇米影音 | 狠狠操美女 | 天天操天天插天天干 | 不卡免费播放 | 四虎国产欧美成人影院 | 久久99精品国产麻豆宅宅 | 国产欧美一区二区三区免费 |