public class Text {    //線程同步的5種方式    PRivate int index = 10;    public int getIndex(){        return index;    }    /**     * 用同步方法實現     *     * @param dex     */    public synchronized void saveValue(int dex){        index+=dex;    } 2:使用同步代碼塊:  即有synchronized關鍵字修飾的語句塊。    public class Text {    //線程同步的5種方式    private int index = 10;    public int getIndex(){        return index;    }    /**     * 用同步方法實現     *     * @param dex     *///    public synchronized void saveValue(int dex){//        index+=dex;//    }    /**     * 用同步代碼塊實現     *     * @param dex     */    public void saveValue(int dex){        synchronized (this){            index+=dex;        }    } 3:使用特殊域變量(volatile)實現線程同步    a:volatile關鍵字為域變量的訪問提供了一種免鎖機制,     b:使用volatile修飾域相當于告訴虛擬機該域可能會被其他線程更新,     c:因此每次使用該域就要重新計算,而不是使用寄存器中的值     d:volatile不會提供任何原子操作,它也不能用來修飾final類型的變量   其他代碼不變,只需要在定義變量的時候用volatile   private volatile int index = 10;  注意,不需要再使用synchronizedpublic void saveValue(int dex){    index+=dex;} 4:使用ReentrantLock類: public class Text {    //線程同步的5種方式    private int index = 10;    private Lock lock = new ReentrantLock();    public int getIndex(){        return index;    }    public void saveValue(int dex){        lock.lock();        try{            index+=dex;        }finally{            lock.unlock();        }           }  使用ReentrantLock類,注意要及時釋放鎖 5:使用局部變量實現線程同步     如果使用ThreadLocal管理變量,則每一個使用該變量的線程都獲得該變量的副本,     副本之間相互獨立,這樣每一個線程都可以隨意修改自己的變量副本,而不會對其他線程產生影響。   ThreadLocal() : 創建一個線程本地變量     get() : 返回此線程局部變量的當前線程副本中的值     initialValue() : 返回此線程局部變量的當前線程的"初始值"     set(T value) : 將此線程局部變量的當前線程副本中的值設置為value      private static ThreadLocal<Integer> index = new ThreadLocal<Integer>(){        @Override        protected Integer initialValue() {            return 10;        }    };    public  int getAccount(){        return  index.get();    };    public void save (int money){        index.set(index.get()+money);    } 下面,我們來測試下用鎖和不用鎖的區別:  首先編寫測試代碼,  public class Go {    public static void main(String[] args) {         Go go = new Go();         go.TestThread();    }    public void TestThread(){        Text text = new Text();        NewThread th = new NewThread(text);        System.out.println("線程1");        Thread thread1 = new Thread(th);        thread1.start();        System.out.println("線程2");        Thread thread2 = new Thread(th);        thread2.start();    }    class NewThread implements Runnable{        private Text text;        public NewThread(Text text){            this.text = text;        }        @Override        public void run() {            for (int i = 0; i < 200; i++) {                text.saveValue(1);                System.out.println(i + "賬戶余額為:" + text.getIndex());            }        }    }}在不用鎖的情況下:我們看輸出值 0賬戶余額為:120賬戶余額為:121賬戶余額為:131賬戶余額為:142賬戶余額為:152賬戶余額為:163賬戶余額為:173賬戶余額為:184賬戶余額為:194賬戶余額為:205賬戶余額為:215賬戶余額為:226賬戶余額為:236賬戶余額為:247賬戶余額為:257賬戶余額為:268賬戶余額為:279賬戶余額為:298賬戶余額為:2810賬戶余額為:309賬戶余額為:3111賬戶余額為:3210賬戶余額為:3312賬戶余額為:3411賬戶余額為:3513賬戶余額為:3612賬戶余額為:3714賬戶余額為:3813賬戶余額為:3914賬戶余額為:4115賬戶余額為:4216賬戶余額為:4317賬戶余額為:4418賬戶余額為:4515賬戶余額為:4019賬戶余額為:4616賬戶余額為:4720賬戶余額為:4817賬戶余額為:4921賬戶余額為:5022賬戶余額為:5223賬戶余額為:5324賬戶余額為:5418賬戶余額為:5125賬戶余額為:5519賬戶余額為:5626賬戶余額為:5720賬戶余額為:5827賬戶余額為:5921賬戶余額為:6028賬戶余額為:6122賬戶余額為:6223賬戶余額為:6424賬戶余額為:6529賬戶余額為:6325賬戶余額為:6630賬戶余額為:6726賬戶余額為:6831賬戶余額為:6927賬戶余額為:7032賬戶余額為:7133賬戶余額為:7328賬戶余額為:7234賬戶余額為:7429賬戶余額為:7535賬戶余額為:7630賬戶余額為:7736賬戶余額為:7831賬戶余額為:7937賬戶余額為:8032賬戶余額為:8138賬戶余額為:8233賬戶余額為:8339賬戶余額為:8440賬戶余額為:8634賬戶余額為:8541賬戶余額為:8742賬戶余額為:8935賬戶余額為:8836賬戶余額為:9137賬戶余額為:9243賬戶余額為:9038賬戶余額為:9344賬戶余額為:9439賬戶余額為:9545賬戶余額為:9646賬戶余額為:9847賬戶余額為:9948賬戶余額為:10049賬戶余額為:10150賬戶余額為:10251賬戶余額為:10340賬戶余額為:9752賬戶余額為:10441賬戶余額為:10553賬戶余額為:10642賬戶余額為:10754賬戶余額為:10843賬戶余額為:10955賬戶余額為:11044賬戶余額為:11156賬戶余額為:11245賬戶余額為:11357賬戶余額為:11446賬戶余額為:11558賬戶余額為:11647賬戶余額為:11759賬戶余額為:11848賬戶余額為:11960賬戶余額為:12049賬戶余額為:12161賬戶余額為:12262賬戶余額為:12450賬戶余額為:12363賬戶余額為:12551賬戶余額為:12664賬戶余額為:12752賬戶余額為:12865賬戶余額為:12953賬戶余額為:13066賬戶余額為:13167賬戶余額為:13354賬戶余額為:13268賬戶余額為:13469賬戶余額為:13670賬戶余額為:13771賬戶余額為:13872賬戶余額為:13973賬戶余額為:14074賬戶余額為:14175賬戶余額為:14276賬戶余額為:14377賬戶余額為:14478賬戶余額為:14579賬戶余額為:14680賬戶余額為:14781賬戶余額為:14882賬戶余額為:14983賬戶余額為:15084賬戶余額為:15185賬戶余額為:15286賬戶余額為:15387賬戶余額為:15488賬戶余額為:15589賬戶余額為:15690賬戶余額為:15791賬戶余額為:15892賬戶余額為:15955賬戶余額為:13593賬戶余額為:16056賬戶余額為:16194賬戶余額為:16257賬戶余額為:16358賬戶余額為:16559賬戶余額為:16660賬戶余額為:16761賬戶余額為:16862賬戶余額為:16963賬戶余額為:17064賬戶余額為:17195賬戶余額為:16465賬戶余額為:17296賬戶余額為:17366賬戶余額為:17497賬戶余額為:17567賬戶余額為:17698賬戶余額為:17768賬戶余額為:17899賬戶余額為:17969賬戶余額為:180100賬戶余額為:18170賬戶余額為:182101賬戶余額為:18371賬戶余額為:184102賬戶余額為:18572賬戶余額為:186103賬戶余額為:18773賬戶余額為:188104賬戶余額為:18974賬戶余額為:190105賬戶余額為:19175賬戶余額為:192106賬戶余額為:19376賬戶余額為:194107賬戶余額為:19577賬戶余額為:196108賬戶余額為:19778賬戶余額為:198109賬戶余額為:19979賬戶余額為:200110賬戶余額為:20180賬戶余額為:202111賬戶余額為:20381賬戶余額為:204112賬戶余額為:20582賬戶余額為:206113賬戶余額為:20783賬戶余額為:208114賬戶余額為:20984賬戶余額為:210115賬戶余額為:21185賬戶余額為:212116賬戶余額為:21386賬戶余額為:214117賬戶余額為:21587賬戶余額為:216118賬戶余額為:21788賬戶余額為:218119賬戶余額為:21989賬戶余額為:220120賬戶余額為:22190賬戶余額為:222121賬戶余額為:22391賬戶余額為:224122賬戶余額為:22592賬戶余額為:226123賬戶余額為:22793賬戶余額為:228124賬戶余額為:22994賬戶余額為:230125賬戶余額為:23195賬戶余額為:232126賬戶余額為:23396賬戶余額為:234127賬戶余額為:23597賬戶余額為:236128賬戶余額為:23798賬戶余額為:238129賬戶余額為:23999賬戶余額為:240130賬戶余額為:241100賬戶余額為:242131賬戶余額為:243101賬戶余額為:244132賬戶余額為:245102賬戶余額為:246133賬戶余額為:247103賬戶余額為:248134賬戶余額為:249104賬戶余額為:250135賬戶余額為:251105賬戶余額為:252136賬戶余額為:253106賬戶余額為:254137賬戶余額為:255107賬戶余額為:256138賬戶余額為:257108賬戶余額為:258139賬戶余額為:259109賬戶余額為:260140賬戶余額為:261110賬戶余額為:262141賬戶余額為:263111賬戶余額為:264142賬戶余額為:265112賬戶余額為:266143賬戶余額為:267113賬戶余額為:268144賬戶余額為:269145賬戶余額為:271114賬戶余額為:270146賬戶余額為:272115賬戶余額為:273147賬戶余額為:274116賬戶余額為:275148賬戶余額為:276117賬戶余額為:277149賬戶余額為:278118賬戶余額為:279150賬戶余額為:280151賬戶余額為:282152賬戶余額為:283153賬戶余額為:284154賬戶余額為:285155賬戶余額為:286156賬戶余額為:287157賬戶余額為:288158賬戶余額為:289159賬戶余額為:290160賬戶余額為:291119賬戶余額為:281161賬戶余額為:292162賬戶余額為:294163賬戶余額為:295164賬戶余額為:296120賬戶余額為:293165賬戶余額為:297121賬戶余額為:298166賬戶余額為:299122賬戶余額為:300167賬戶余額為:301123賬戶余額為:302168賬戶余額為:303169賬戶余額為:305170賬戶余額為:306171賬戶余額為:307172賬戶余額為:308173賬戶余額為:309124賬戶余額為:304174賬戶余額為:310125賬戶余額為:311175賬戶余額為:312126賬戶余額為:313176賬戶余額為:314127賬戶余額為:315177賬戶余額為:316178賬戶余額為:318179賬戶余額為:319180賬戶余額為:320181賬戶余額為:321182賬戶余額為:322183賬戶余額為:323184賬戶余額為:324185賬戶余額為:325128賬戶余額為:317186賬戶余額為:326187賬戶余額為:328129賬戶余額為:327188賬戶余額為:329130賬戶余額為:330189賬戶余額為:331131賬戶余額為:332190賬戶余額為:333191賬戶余額為:335192賬戶余額為:336193賬戶余額為:337194賬戶余額為:338195賬戶余額為:339196賬戶余額為:340197賬戶余額為:341132賬戶余額為:334198賬戶余額為:342133賬戶余額為:343199賬戶余額為:344134賬戶余額為:345135賬戶余額為:346136賬戶余額為:347137賬戶余額為:348138賬戶余額為:349139賬戶余額為:350140賬戶余額為:351141賬戶余額為:352142賬戶余額為:353143賬戶余額為:354144賬戶余額為:355145賬戶余額為:356146賬戶余額為:357147賬戶余額為:358148賬戶余額為:359149賬戶余額為:360150賬戶余額為:361151賬戶余額為:362152賬戶余額為:363153賬戶余額為:364154賬戶余額為:365155賬戶余額為:366156賬戶余額為:367157賬戶余額為:368158賬戶余額為:369159賬戶余額為:370160賬戶余額為:371161賬戶余額為:372162賬戶余額為:373163賬戶余額為:374164賬戶余額為:375165賬戶余額為:376166賬戶余額為:377167賬戶余額為:378168賬戶余額為:379169賬戶余額為:380170賬戶余額為:381171賬戶余額為:382172賬戶余額為:383173賬戶余額為:384174賬戶余額為:385175賬戶余額為:386176賬戶余額為:387177賬戶余額為:388178賬戶余額為:389179賬戶余額為:390180賬戶余額為:391181賬戶余額為:392182賬戶余額為:393183賬戶余額為:394184賬戶余額為:395185賬戶余額為:396186賬戶余額為:397187賬戶余額為:398188賬戶余額為:399189賬戶余額為:400190賬戶余額為:401191賬戶余額為:402192賬戶余額為:403193賬戶余額為:404194賬戶余額為:405195賬戶余額為:406196賬戶余額為:407197賬戶余額為:408198賬戶余額為:409199賬戶余額為:410 在用鎖的情況下:我們看輸出值 0賬戶余額為:111賬戶余額為:122賬戶余額為:133賬戶余額為:144賬戶余額為:155賬戶余額為:166賬戶余額為:177賬戶余額為:188賬戶余額為:199賬戶余額為:2010賬戶余額為:2111賬戶余額為:2212賬戶余額為:2313賬戶余額為:2414賬戶余額為:2515賬戶余額為:2616賬戶余額為:2717賬戶余額為:2818賬戶余額為:2919賬戶余額為:3020賬戶余額為:3121賬戶余額為:3222賬戶余額為:3323賬戶余額為:3424賬戶余額為:3525賬戶余額為:3626賬戶余額為:3727賬戶余額為:3828賬戶余額為:3929賬戶余額為:4030賬戶余額為:4131賬戶余額為:4232賬戶余額為:4333賬戶余額為:4434賬戶余額為:4535賬戶余額為:4636賬戶余額為:4737賬戶余額為:4838賬戶余額為:4939賬戶余額為:5040賬戶余額為:5141賬戶余額為:5242賬戶余額為:5343賬戶余額為:5444賬戶余額為:5545賬戶余額為:5646賬戶余額為:5747賬戶余額為:5848賬戶余額為:5949賬戶余額為:6050賬戶余額為:6151賬戶余額為:6252賬戶余額為:6353賬戶余額為:6454賬戶余額為:6555賬戶余額為:6656賬戶余額為:6757賬戶余額為:6858賬戶余額為:6959賬戶余額為:7060賬戶余額為:7161賬戶余額為:7262賬戶余額為:7363賬戶余額為:7464賬戶余額為:7565賬戶余額為:7666賬戶余額為:7767賬戶余額為:7868賬戶余額為:7969賬戶余額為:8070賬戶余額為:8171賬戶余額為:8272賬戶余額為:8373賬戶余額為:8474賬戶余額為:8575賬戶余額為:8676賬戶余額為:8777賬戶余額為:8878賬戶余額為:8979賬戶余額為:9080賬戶余額為:9181賬戶余額為:9282賬戶余額為:9383賬戶余額為:9484賬戶余額為:9585賬戶余額為:9686賬戶余額為:9787賬戶余額為:9888賬戶余額為:9989賬戶余額為:10090賬戶余額為:10191賬戶余額為:10292賬戶余額為:10393賬戶余額為:10494賬戶余額為:10595賬戶余額為:10696賬戶余額為:10797賬戶余額為:10898賬戶余額為:10999賬戶余額為:110100賬戶余額為:111101賬戶余額為:112102賬戶余額為:113103賬戶余額為:114104賬戶余額為:115105賬戶余額為:116106賬戶余額為:117107賬戶余額為:118108賬戶余額為:119109賬戶余額為:120110賬戶余額為:121111賬戶余額為:122112賬戶余額為:123113賬戶余額為:124114賬戶余額為:125115賬戶余額為:126116賬戶余額為:127117賬戶余額為:128118賬戶余額為:129119賬戶余額為:130120賬戶余額為:131121賬戶余額為:132122賬戶余額為:133123賬戶余額為:134124賬戶余額為:135125賬戶余額為:136126賬戶余額為:137127賬戶余額為:138128賬戶余額為:139129賬戶余額為:140130賬戶余額為:141131賬戶余額為:142132賬戶余額為:1430賬戶余額為:1441賬戶余額為:146133賬戶余額為:1462賬戶余額為:147134賬戶余額為:1483賬戶余額為:149135賬戶余額為:1504賬戶余額為:151136賬戶余額為:1525賬戶余額為:153137賬戶余額為:1546賬戶余額為:155138賬戶余額為:1567賬戶余額為:157139賬戶余額為:1588賬戶余額為:159140賬戶余額為:1609賬戶余額為:161141賬戶余額為:16210賬戶余額為:163142賬戶余額為:16411賬戶余額為:165143賬戶余額為:16612賬戶余額為:167144賬戶余額為:16813賬戶余額為:169145賬戶余額為:17014賬戶余額為:171146賬戶余額為:172147賬戶余額為:174148賬戶余額為:175149賬戶余額為:176150賬戶余額為:177151賬戶余額為:178152賬戶余額為:179153賬戶余額為:180154賬戶余額為:181155賬戶余額為:182156賬戶余額為:183157賬戶余額為:184158賬戶余額為:185159賬戶余額為:186160賬戶余額為:187161賬戶余額為:188162賬戶余額為:189163賬戶余額為:190164賬戶余額為:191165賬戶余額為:192166賬戶余額為:193167賬戶余額為:194168賬戶余額為:195169賬戶余額為:196170賬戶余額為:197171賬戶余額為:198172賬戶余額為:199173賬戶余額為:200174賬戶余額為:201175賬戶余額為:202176賬戶余額為:203177賬戶余額為:204178賬戶余額為:205179賬戶余額為:206180賬戶余額為:207181賬戶余額為:208182賬戶余額為:209183賬戶余額為:210184賬戶余額為:211185賬戶余額為:212186賬戶余額為:213187賬戶余額為:214188賬戶余額為:215189賬戶余額為:216190賬戶余額為:217191賬戶余額為:218192賬戶余額為:219193賬戶余額為:220194賬戶余額為:221195賬戶余額為:222196賬戶余額為:223197賬戶余額為:224198賬戶余額為:225199賬戶余額為:22615賬戶余額為:17316賬戶余額為:22717賬戶余額為:22818賬戶余額為:22919賬戶余額為:23020賬戶余額為:23121賬戶余額為:23222賬戶余額為:23323賬戶余額為:23424賬戶余額為:23525賬戶余額為:23626賬戶余額為:23727賬戶余額為:23828賬戶余額為:23929賬戶余額為:24030賬戶余額為:24131賬戶余額為:24232賬戶余額為:24333賬戶余額為:24434賬戶余額為:24535賬戶余額為:24636賬戶余額為:24737賬戶余額為:24838賬戶余額為:24939賬戶余額為:25040賬戶余額為:25141賬戶余額為:25242賬戶余額為:25343賬戶余額為:25444賬戶余額為:25545賬戶余額為:25646賬戶余額為:25747賬戶余額為:25848賬戶余額為:25949賬戶余額為:26050賬戶余額為:26151賬戶余額為:26252賬戶余額為:26353賬戶余額為:26454賬戶余額為:26555賬戶余額為:26656賬戶余額為:26757賬戶余額為:26858賬戶余額為:26959賬戶余額為:27060賬戶余額為:27161賬戶余額為:27262賬戶余額為:27363賬戶余額為:27464賬戶余額為:27565賬戶余額為:27666賬戶余額為:27767賬戶余額為:27868賬戶余額為:27969賬戶余額為:28070賬戶余額為:28171賬戶余額為:28272賬戶余額為:28373賬戶余額為:28474賬戶余額為:28575賬戶余額為:28676賬戶余額為:28777賬戶余額為:28878賬戶余額為:28979賬戶余額為:29080賬戶余額為:29181賬戶余額為:29282賬戶余額為:29383賬戶余額為:29484賬戶余額為:29585賬戶余額為:29686賬戶余額為:29787賬戶余額為:29888賬戶余額為:29989賬戶余額為:30090賬戶余額為:30191賬戶余額為:30292賬戶余額為:30393賬戶余額為:30494賬戶余額為:30595賬戶余額為:30696賬戶余額為:30797賬戶余額為:30898賬戶余額為:30999賬戶余額為:310100賬戶余額為:311101賬戶余額為:312102賬戶余額為:313103賬戶余額為:314104賬戶余額為:315105賬戶余額為:316106賬戶余額為:317107賬戶余額為:318108賬戶余額為:319109賬戶余額為:320110賬戶余額為:321111賬戶余額為:322112賬戶余額為:323113賬戶余額為:324114賬戶余額為:325115賬戶余額為:326116賬戶余額為:327117賬戶余額為:328118賬戶余額為:329119賬戶余額為:330120賬戶余額為:331121賬戶余額為:332122賬戶余額為:333123賬戶余額為:334124賬戶余額為:335125賬戶余額為:336126賬戶余額為:337127賬戶余額為:338128賬戶余額為:339129賬戶余額為:340130賬戶余額為:341131賬戶余額為:342132賬戶余額為:343133賬戶余額為:344134賬戶余額為:345135賬戶余額為:346136賬戶余額為:347137賬戶余額為:348138賬戶余額為:349139賬戶余額為:350140賬戶余額為:351141賬戶余額為:352142賬戶余額為:353143賬戶余額為:354144賬戶余額為:355145賬戶余額為:356146賬戶余額為:357147賬戶余額為:358148賬戶余額為:359149賬戶余額為:360150賬戶余額為:361151賬戶余額為:362152賬戶余額為:363153賬戶余額為:364154賬戶余額為:365155賬戶余額為:366156賬戶余額為:367157賬戶余額為:368158賬戶余額為:369159賬戶余額為:370160賬戶余額為:371161賬戶余額為:372162賬戶余額為:373163賬戶余額為:374164賬戶余額為:375165賬戶余額為:376166賬戶余額為:377167賬戶余額為:378168賬戶余額為:379169賬戶余額為:380170賬戶余額為:381171賬戶余額為:382172賬戶余額為:383173賬戶余額為:384174賬戶余額為:385175賬戶余額為:386176賬戶余額為:387177賬戶余額為:388178賬戶余額為:389179賬戶余額為:390180賬戶余額為:391181賬戶余額為:392182賬戶余額為:393183賬戶余額為:394184賬戶余額為:395185賬戶余額為:396186賬戶余額為:397187賬戶余額為:398188賬戶余額為:399189賬戶余額為:400190賬戶余額為:401191賬戶余額為:402192賬戶余額為:403193賬戶余額為:404194賬戶余額為:405195賬戶余額為:406196賬戶余額為:407197賬戶余額為:408198賬戶余額為:409199賬戶余額為:410 結果很明顯了,這就是同步的作用。   
| 
 
 | 
新聞熱點
疑難解答