Java多線程之Synchronized對象鎖

JAVA的synchronized關鍵字為線程加鎖,目的是保證數據執(zhí)行的一致性。
防止多個線程同時操作一個對象或者數據,造成數據混亂。

synchronized對象鎖示例

public class RunTest implements Runnable {
    static RunTest rt =  new RunTest();
    static int i = 0;
    @Override
    public void run() {
        // TODO Auto-generated method stub  
        // 對象鎖代碼塊形式
        synchronized(this){ // 啟動后,線程執(zhí)行完畢后,再執(zhí)行下一個的順序執(zhí)行。
            System.out.println(i + "-->" + Thread.currentThread().getName());
            try {
                Thread.sleep(3000L);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(i + "-->" + Thread.currentThread().getName() +" end");
        }  
    }

    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub 
        Thread t1 = new Thread(rt);
        Thread t2 = new Thread(rt); 
        t1.start();
        t2.start(); 
//       t1.join();// 線程執(zhí)行完畢之后,才繼續(xù)執(zhí)行主程序內容。 
//       t2.join();
                  // 第二種方法,線程執(zhí)行完畢之后,才繼續(xù)執(zhí)行主程序內容。 
         while(t1.isAlive() || t2.isAlive()){ 
         } 
        System.out.println("-->" + i); 
    }

}

執(zhí)行效果輸出

0-->Thread-0
0-->Thread-0 end
0-->Thread-1
0-->Thread-1 end
-->0
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 線程同步 在大多數實際的多線程應用中, 兩個或兩個以上的線程需要共享對同一數據的存取。多個線程或者進程在讀寫一個共...
    Steven1997閱讀 2,062評論 0 3
  • 進程和線程 進程 所有運行中的任務通常對應一個進程,當一個程序進入內存運行時,即變成一個進程.進程是處于運行過程中...
    勝浩_ae28閱讀 5,265評論 0 23
  • Java多線程學習 [-] 一擴展javalangThread類 二實現javalangRunnable接口 三T...
    影馳閱讀 3,115評論 1 18
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,885評論 11 349
  • 玉簪滑落發(fā)的空隙 穿透背脊的涼意 只一杯醉生夢死 化盡半生繁華
    瑪諾奇朵的愛情閱讀 212評論 0 0

友情鏈接更多精彩內容