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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java中實現線程同步的方法

Java中實現線程同步的方法

更新時間:2022-06-10 09:24:00 來源:動力節點 瀏覽1272次

Java中實現線程同步的方法有哪些?動力節點小編來告訴大家。

1.同步方式

也就是有修改同步關鍵字的方法。因為java中的每個對象都有一個內置鎖,當你用這個關鍵字修改一個方法時,內置鎖保護了整個方法。在調用方法之前,需要先獲取內置鎖,否則會處于阻塞狀態。。

注意:Java多線程同步synchronized關鍵字也可以修改靜態方法,如果調用靜態方法,會鎖定整個類。

2.同步代碼塊

也就是被synchronized關鍵字修改的語句塊。被這個關鍵字修改的語句塊被自動鎖定,實現同步。

代碼如下:

synchronized(object){ 
}

注意:同步是一項開銷很大的操作,所以要盡量減少同步的內容。。一般不需要同步整個方法,使用同步的代碼塊可以同步關鍵代碼。

package com.xhj.thread;
    /**
     *  application of thread synchronization 
     * 
     * @author XIEHEJUN
     * 
     */
    public class SynchronizedThread {
        class Bank {
            private int account = 100;
            public int getAccount() {
                return account;
            }
            /**
             *  realized by synchronous method 
             * 
             * @param money
             */
            public synchronized void save(int money) {
                account += money;
            }
            /**
             *  implement with synchronous code block 
             * 
             * @param money
             */
            public void save1(int money) {
                synchronized (this) {
                    account += money;
                }
            }
        }
class NewThread implements Runnable {
            private Bank bank;
            public NewThread(Bank bank) {
                this.bank = bank;
            }
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    // bank.save1(10);
                    bank.save(10);
                    System.out.println(i + " the account balance is :" + bank.getAccount());
                }
            }
        }
        /**
         *  set up a thread and call the inner class 
         */
        public void useThread() {
            Bank bank = new Bank();
            NewThread new_thread = new NewThread(bank);
            System.out.println(" thread 1 ");
            Thread thread1 = new Thread(new_thread);
            thread1.start();
            System.out.println(" thread 2 ");
            Thread thread2 = new Thread(new_thread);
            thread2.start();
        }
        public static void main(String[] args) {
            SynchronizedThread st = new SynchronizedThread();
            st.useThread();
        }
    }

例子加說明:

同步是多線程中的一個重要概念。在多線程環境中可以保證使用同步。,程序不會在設計之外產生錯誤結果。實現同步有兩種方式。, 同步方法和同步塊,都使用了synchronized關鍵字。

同步方法:在方法中添加同步修飾符,使其成為同步方法,該方法可以是靜態的和非靜態的,但不能是抽象類的抽象方法,也不能是接口中的接口方法。

3.鎖同步

(1)java.util.concurrent

(2)synchronized同步的

(3)ReentrantLockfinally

線程本地

ThreadLocal() : get() : initialValue() : "" set(T value) : value

        //Bank
        public class Bank{
            //ThreadLocalaccount
            private static ThreadLocal<Integer> account = new ThreadLocal<Integer>(){
                @Override
                protected Integer initialValue(){
                    return 100;
                }
            };
            public void save(int money){
                account.set(account.get()+money);
            }
            public int getAccount(){
                return account.get();
            }
        }

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 91亚洲成人 | 久久96国产精品久久久 | 国产91九色在线播放 | 四虎免费入口 | 99久久久免费精品免费 | 亚洲瑟瑟网| 九九综合 | 99精品视频看国产啪视频 | 国产亚洲精品久久综合影院 | 日韩二区| 成年女人视频免费免费看 | 国产一区二区在免费观看 | 免费区欧美一级毛片 | 欧美性精品hd在线观看 | 羞羞免费网站 | 香蕉久久网 | 福利视频中文在线观看 | 久久性精品 | 日本亚洲欧洲免费无码 | 欧美日在线 | 久色影视 | 四虎永久在线精品视频播放 | 欧美日韩亚洲国产 | 亚洲午夜综合网 | 国产成人精品综合久久久软件 | 国内精品久久久久久西瓜色吧 | 一级成人黄色片 | 综合网天天操天天射 | 中国国语毛片免费观看视频 | 99r视频 | 国产精品亚洲玖玖玖在线靠爱 | 色中色综合 | 欧美亚洲国产另类在线观看 | 免费一级毛片不卡不收费 | a毛片免费观看完整 | 久久香蕉综合精品国产 | 亚洲精品6久久久久中文字幕 | 国产精品中文 | 日韩欧美亚洲综合久久影院d3 | 韩日一区二区三区 | 99视频国产精品 |