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

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

Java中實現(xiàn)線程同步的方法

更新時間:2022-06-10 09:24:00 來源:動力節(jié)點 瀏覽1281次

Java中實現(xiàn)線程同步的方法有哪些?動力節(jié)點小編來告訴大家。

1.同步方式

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

注意:Java多線程同步synchronized關(guān)鍵字也可以修改靜態(tài)方法,如果調(diào)用靜態(tài)方法,會鎖定整個類。

2.同步代碼塊

也就是被synchronized關(guān)鍵字修改的語句塊。被這個關(guān)鍵字修改的語句塊被自動鎖定,實現(xiàn)同步。

代碼如下:

synchronized(object){ 
}

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

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

例子加說明:

同步是多線程中的一個重要概念。在多線程環(huán)境中可以保證使用同步。,程序不會在設(shè)計之外產(chǎn)生錯誤結(jié)果。實現(xiàn)同步有兩種方式。, 同步方法和同步塊,都使用了synchronized關(guān)鍵字。

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

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

 

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

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 免费看的黄色小视频 | 中文字幕第九页 | 狠狠色狠狠色综合日日五 | 欧美一级欧美三级在线观看 | 国内精品久久久久久网站 | 一个人的视频www片免费 | 天天草草 | 亚洲一页 | www.成人网.com| 日本免费一二区视频 | 一区二区三区免费精品视频 | 日韩成人在线观看视频 | 日本三级香港三级人妇网站 | 日本黄大片在线观看 | 天天拍天天干 | 99re5精品视频在线观看 | 午夜影视在线免费观看 | 日日热| 亚洲国产成人久久综合一区77 | 国产精品98视频全部国产 | 欧美国产三级 | 亚洲色图欧美另类 | 狠狠干婷婷 | 国外成人在线视频 | 欧美视频区 | 狠狠色噜噜狠狠狠狠色综合网 | 国产色爽免费视频 | 91最新视频在线观看 | 免费精品视频在线 | 亚洲综合男人的天堂色婷婷 | 亚洲欧美在线观看视频 | 操操免费视频 | 精品亚洲综合在线第一区 | 成人午夜爽爽爽免费视频 | 国内精品视频一区 | 黄色视屏免费在线观看 | 2021国产成人午夜精品 | 最近中文字幕无吗 | 国产一级一片免费播放刺激 | 国产欧美日韩综合精品一区二区 | 亚洲欧美人成网站综合在线 |