大战熟女丰满人妻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();
            }
        }

 

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 四虎国产精品永久一区 | 99久久综合狠狠综合久久一区 | 国产啪爱视频精品免视 | 欧美一级毛片免费观看视频 | 成年女人免费毛片视频永久 | 成人毛片免费观看视频大全 | 欧美啪啪小视频 | 成人精品综合免费视频 | 奇米网在线视频 | 91视频入口 | 国产成人8x视频一区二区 | 久久日本精品99久久久 | 亚洲一成人毛片 | 亚洲精品久久久久福利网站 | 97 在线播放 | 午夜一级 | 成人嫩草研究院网站进 | 手机国产日韩高清免费看片 | 亚洲综合成人网 | 国产一级片子 | 欧美日韩中文国产一区 | 99久久久久久久 | 日本成片 | 日本一区二区精品 | 久久91这里精品国产2020 | 99色这里只有精品 | 成人毛片18女人毛片 | 国产理论视频在线观看 | 羞羞视频在线免费 | 亚洲精品乱码久久久久久蜜桃 | 99久久99久久久精品久久 | 99国产精品国产精品 | 日本亚洲欧洲免费无码 | 一级日本高清视频免费观看 | 久久国产欧美 | 四虎影视精品 | 久久久高清日本道免费观看 | 亚洲狠狠婷婷综合久久久久图片 | 久久99精品久久久久久久不卡 | 国内精品久久久久影院亚洲 | 特级无码a级毛片特黄 |