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

專注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爱过程免费观看 | 免费污污视频网站 | 亚洲一区三区 | 黄色毛片免费在线观看 | 成年男女男精品免费视频网站 | 乱人伦精品一区二区 | 中文字幕福利片 | 国产乱视频| 中文字幕福利视频 | 天天做天天爱天天一爽一毛片 | 日韩毛片| 曰皮全部过程视频免费高清 | 亚洲国产精品+制服丝袜 | 香蕉久久夜色精品国产小优 | 国产无人区卡一卡二卡三网站 | 久久国产成人午夜aⅴ影院 久久国产欧美日韩精品 | 日韩三级免费 | 偷偷要色偷偷 | 亚洲天堂久久新 | 欧美一级片在线视频 | 中文字幕免费看 | free性丰满hd性欧 | 公又粗又长又大又深好爽日本 | 国产精品视频分类一区 | 欧美视频精品在线 | 91精品啪在线观看国产线免费 | 欧美在线导航 | 国产自在线拍 | 成人全黄三级视频在线观看 | 亚洲一区二区精品视频 | 日韩欧美一区二区三区不卡在线 | 在线观看亚洲精品国产 | 国产成人在线综合 | 国产高清在线精品一区在线 | 高清国产美女一级a毛片在线 | 五月激情丁香 | 国产精久久一区二区三区 | 在线亚洲欧美日韩 |