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

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

Java中實現線程同步的方法

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

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();
            }
        }

 

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 热99re久久精品2久久久 | 国产精品推荐 | 国产好大好爽久久久久久久 | 可以看美女隐私的网站 | 一级成人毛片免费观看 | 国产精品一区在线观看你懂的 | 亚洲精品美女久久久久 | 色综合天天综合网看在线影院 | 日本国产一区二区三区 | 久久色伊人 | 深夜福利在线免费观看 | 日韩欧美精品在线视频 | www.日韩视频 | 中文字幕第一页亚洲 | 久久久久久色 | 亚洲一区日韩二区欧美三区 | 好吊妞在线成人免费 | 免费人成在线观看网站品爱网 | 91久久福利国产成人精品 | 免费一级毛片在级播放 | 色中色资源站 | 高清亚洲综合色成在线播放放 | 中国大陆一级毛片 免费 | 日本不卡在线观看 | 久久成人18免费 | 久久一卡二卡 | 午夜视频在线观看国产www | 国产精品第一 | 亚洲精品www久久久久久久软件 | 久久青青草视频 | 欧美一级毛片免费观看 | 国产三级做爰在线观看∵ | 波多野结衣一区二区三区四区 | 亚洲国产精品日韩在线 | 国产在线不卡视频 | 亚洲成人福利在线 | www国产精品com | 国产骚熟| 日韩免费在线 | 奇米777视频国产 | 成人伊人青草久久综合网 |