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

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

Java中實現線程同步的方法

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

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

 

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 在线观看免费a∨网站 | 亚洲视频在线观看 | 成人毛片视频免费网站观看 | 中文字幕欧美日韩久久 | 欧美成人一级片 | 国产在线视频一区二区三区 | 欧美精品第二页 | 午夜免费观看_视频在线观看 | 中国大陆一级毛片 免费 | 国产成人精品免费视频软件 | 韩国xxxx色视频在线观看免费 | 成人xxx免费视频播放 | 亚洲人成网址在线播放a | 极品毛片 | 黄色一级视频片 | 免费观看无遮挡www的小视频 | 国产伦精品一区二区三区免费 | 邪恶亚洲 | 在线视频永久在线视频 | 性色生活片免费放 | 丝袜足控免费软件xx | 最近中文字幕免费版在线3 最近中文字幕免费版在线 最近中文字幕免费mv在线视频 | 国产成人精品高清不卡在线 | 性欧美激情在线观看 | 久久久久国产一级毛片高清版 | 亚洲国产精品第一区二区三区 | 日日噜噜夜夜狠狠视频欧美人 | 182tv午夜精品视频在线播放 | 大伊香蕉精品一区视频在线 | 亚洲综合一区国产精品 | 亚洲成人精品在线 | 狠狠插影院 | 青草草在线视频 | 中文国产在线观看 | 两性午夜又粗又大又爽视频 | 521a成v视频网站在线入口 | 三级黄色片免费观看 | 成人看视频 | 天天精品在线 | www.91在线播放| 日本黄大片在线观看 |