黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

Java多線程同步方法

package com.wkcto.intrinsiclock;

/**
 * synchronized同步實例方法
 *      把整個方法體作為同步代碼塊
 *      默認的鎖對象是this對象
 * Author: 老崔
 */
public class Test05 {
    public static void main(String[] args) {
        //先創建Test01對象,通過對象名調用mm()方法
        Test05 obj = new Test05();

        //一個線程調用mm()方法
        new Thread(new Runnable() {
            @Override
            public void run() {
                obj.mm();       //使用的鎖對象this就是obj對象
            }
        }).start();

        //另一個線程調用mm22()方法
        new Thread(new Runnable() {
            @Override
            public void run() {
                obj.mm22();       //使用的鎖對象this也是obj對象, 可以同步
//                new Test05().mm22();       //使用的鎖對象this是剛剛new創建的一個新對象,不是同一個鎖對象不能同步
            }
        }).start();

    }

    //定義方法,打印100行字符串
    public void mm(){
        synchronized ( this ) {     //經常使用this當前對象作為鎖對象
            for (int i = 1; i <= 100; i++) {
                System.out.println(Thread.currentThread().getName() + " --> " + i);
            }
        }
    }

    //使用synchronized修飾實例方法,同步實例方法, 默認this作為鎖對象
    public synchronized void mm22(){
            for (int i = 1; i <= 100; i++) {
                System.out.println(Thread.currentThread().getName() + " --> " + i);
            }
    }
}

package com.wkcto.intrinsiclock;

/**
 * synchronized同步靜態方法
 *      把整個方法體作為同步代碼塊
 *      默認的鎖對象是當前類的運行時類對象, Test06.class, 有人稱它為類鎖
 * Author: 老崔
 */
public class Test06 {
    public static void main(String[] args) {
        //先創建Test01對象,通過對象名調用mm()方法
        Test06 obj = new Test06();

        //一個線程調用m1()方法
        new Thread(new Runnable() {
            @Override
            public void run() {
                obj.m1();       //使用的鎖對象是Test06.class
            }
        }).start();

        //另一個線程調用sm2()方法
        new Thread(new Runnable() {
            @Override
            public void run() {
                Test06.sm2();    //使用的鎖對象是Test06.class
            }
        }).start();

    }

    //定義方法,打印100行字符串
    public void m1(){
        //使用當前類的運行時類對象作為鎖對象,可以簡單的理解為把Test06類的字節碼文件作為鎖對象
        synchronized ( Test06.class ) {
            for (int i = 1; i <= 100; i++) {
                System.out.println(Thread.currentThread().getName() + " --> " + i);
            }
        }
    }

    //使用synchronized修飾靜態方法,同步靜態方法, 默認運行時類Test06.class作為鎖對象
    public synchronized static  void sm2(){
            for (int i = 1; i <= 100; i++) {
                System.out.println(Thread.currentThread().getName() + " --> " + i);
            }
    }
}
package com.wkcto.intrinsiclock;

/**
 * 同步方法與同步代碼塊如何選擇
 *  同步方法鎖的粒度粗, 執行效率低, 同步代碼塊執行效率高
 *
 * Author: 老崔
 */
public class Test07 {
    public static void main(String[] args) {
        Test07 obj = new Test07();

        new Thread(new Runnable() {
            @Override
            public void run() {
                obj.doLongTimeTask();
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                obj.doLongTimeTask();
            }
        }).start();
    }

    //同步方法, 執行效率低
    public synchronized void doLongTimeTask(){
        try {
            System.out.println("Task Begin");
            Thread.sleep(3000);         //模擬任務需要準備3秒鐘


                System.out.println("開始同步");
                for(int i = 1; i <= 100; i++){
                    System.out.println(Thread.currentThread().getName() + "-->" + i);
                }

            System.out.println("Task end");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    //同步代碼塊,鎖的粒度細, 執行效率高
    public void doLongTimeTask2(){
        try {
            System.out.println("Task Begin");
            Thread.sleep(3000);         //模擬任務需要準備3秒鐘

            synchronized (this){
                System.out.println("開始同步");
                for(int i = 1; i <= 100; i++){
                    System.out.println(Thread.currentThread().getName() + "-->" + i);
                }
            }
            System.out.println("Task end");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

 

 

全部教程
主站蜘蛛池模板: 国内精品久久久久久西瓜色吧 | 日日噜噜夜夜狠狠va视频 | 亚洲七七久久综合桃花 | 成人欧美一区二区三区视频xxx | 五月婷婷色 | 亚洲成人黄色网址 | 免费99精品国产自在现线观看 | 亚洲精品人成网在线播放影院 | 麻豆日韩国产精品欧美在线 | 欧美videos极品另类 | 日韩成人在线观看视频 | 日本一区二区不卡久久入口 | 人人爽人人爽人人片c | 午夜看片未满十八勿进 | 亚洲一区欧美 | 久草久 | 日韩片在线观看 | 成人免费在线播放视频 | 日本草草| 亚洲欧美四级在线播放 | 亚洲国产激情一区二区三区 | 日韩一区二区不卡中文字幕 | 一级一片一_级一片一 | 最新国产一区二区精品久久 | 狠狠色综合网站久久久久久久 | 亚洲国产午夜精品理论片的软件 | 免费看黄的动漫永久免费 | 免费一级毛片私人影院a行 免费一级毛片视频 | 久久网免费视频 | 影音先锋2020色资源网 | 2022久久国产精品免费热麻豆 | 欧美三级 欧美一级 | 日批网站在线观看 | 色视在线| 欧美一级h | 国产黄在线播放免费观看 | 亚洲成人影院在线观看 | 全免费午夜一级毛片一级毛 | 天天看天天色 | 巨胸喷奶水www久久久免费观看 | 在线观看不卡视频 |