同步函數(shù)和同步代碼塊的區(qū)別:

同步函數(shù)的鎖是固定的this.

同步代碼塊的鎖是任意的對(duì)象。

建議使用同步代碼塊。
因?yàn)橥胶瘮?shù)的鎖唯一的,只能是this

當(dāng)同步代碼塊的鎖是this時(shí),可以簡(jiǎn)寫成同步函數(shù)。

package day12;

/*
同步函數(shù)使用的鎖是this;

同步函數(shù)和同步代碼塊的區(qū)別:
同步函數(shù)的鎖是固定的this.

同步代碼塊的鎖是任意的對(duì)象。

建議使用同步代碼塊。
因?yàn)橥胶瘮?shù)的鎖唯一的,只能是this

當(dāng)同步代碼塊的鎖是this時(shí),可以簡(jiǎn)寫成同步函數(shù)。
 */
class Ticket implements Runnable{ //extends Thread{
    private int num = 400;
//    Object obj = new Object();
    boolean flag = true;

    public void run()
    {
        System.out.println("this:"+this);
        if (flag)
            while (true)
            {
                synchronized(this)
                {
                    if(num>0){
                        try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); }
                        System.out.println(Thread.currentThread().getName()+"...obj..."+num--);
                    }
                }
            }
        else
            while (true)
                show();
    }

    public synchronized void show(){
        if(num>0){
            try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); }
            System.out.println(Thread.currentThread().getName()+"...function..."+num--);
        }
    }
}

public class SynFunctionLockDemo {

    public static void main(String[] args) {
        Ticket t = new Ticket();//創(chuàng)建一個(gè)線程任務(wù)對(duì)象。
        System.out.println("t:"+t);

        Thread t1 = new Thread(t);
        Thread t2 = new Thread(t);

        t1.start();
        try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); }
        t.flag = false;
        t2.start();
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運(yùn)行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,821評(píng)論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,820評(píng)論 18 399
  • Java8張圖 11、字符串不變性 12、equals()方法、hashCode()方法的區(qū)別 13、...
    Miley_MOJIE閱讀 3,910評(píng)論 0 11
  • (寫給那些善良,矛盾,為別人而活,過得委屈,不那么開心的妞兒們。) 洗完澡回來(lái),剛好看見qq閃了一下,順手點(diǎn)開,...
    飛鳥相與還閱讀 387評(píng)論 1 1
  • 是?。∈澜珉x了誰(shuí)都會(huì)轉(zhuǎn): 天空翱翔的雄鷹 陸地奔跑的小雞 水里游走的魚兒 夢(mèng): 初開了牙兒 長(zhǎng)成了大樹 盛開了花兒...
    孤影的派大星閱讀 266評(píng)論 0 1

友情鏈接更多精彩內(nèi)容