亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解析Java線程同步鎖的選擇方法

 更新時(shí)間:2013年05月15日 15:30:56   作者:  
本篇文章是對(duì)Java線程同步鎖的選擇方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

在需要線程同步的時(shí)候如何選擇合適的線程鎖?
例:選擇可以存入到常量池當(dāng)中的對(duì)象,String對(duì)象等  

復(fù)制代碼 代碼如下:

public class SyncTest
{
    private String name = "name";
public void method(String flag)
    {
        synchronized (name)
        {
            System.out.println(flag + ", invoke method ....");
            try
            {
                Thread.sleep(1000);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args)
    {
        SyncTest test1 = new SyncTest();

        SyncTest test2 = new SyncTest();

        MyThread1 myThread1 = new MyThread1();
        MyThread1 myThread2 = new MyThread1();
        myThread1.syncTest = test1;
        myThread2.syncTest = test1;

        MyThread1 myThread3 = new MyThread1();
        MyThread1 myThread4 = new MyThread1();
        myThread3.syncTest = test2;
        myThread4.syncTest = test2;

        myThread1.start();
        myThread2.start();
        myThread3.start();
        myThread4.start();

    }

}


線程類:
復(fù)制代碼 代碼如下:

public class MyThread1 extends Thread
{
    SyncTest syncTest;

    @Override
    public void run()
    {
        syncTest.method(this.getName());
    }
}

本來(lái)應(yīng)該是要實(shí)現(xiàn)線程thread1和thread2同步,線程thread3和thread4同步的,但結(jié)果呢?
卻是使得線程thread1、thread2、thread3、thread4同步了,很是郁悶。
我推薦選用的同步鎖對(duì)象:
復(fù)制代碼 代碼如下:

package com.rcx.thread;

public class SyncTest
{
    // 特殊的instance變量,用于充當(dāng)同步鎖的對(duì)象
    private byte[] lock = new byte[0];

    public void method(String flag)
    {
        synchronized (lock)
        {
            System.out.println(flag + ", invoke method f....");
            try
            {
                Thread.sleep(1000);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args)
    {
        SyncTest test1 = new SyncTest();

        SyncTest test2 = new SyncTest();

        MyThread1 myThread1 = new MyThread1();
        MyThread1 myThread2 = new MyThread1();
        myThread1.syncTest = test1;
        myThread2.syncTest = test1;

        MyThread1 myThread3 = new MyThread1();
        MyThread1 myThread4 = new MyThread1();
        myThread3.syncTest = test2;
        myThread4.syncTest = test2;

        myThread1.start();
        myThread2.start();
        myThread3.start();
        myThread4.start();

    }

}


推薦使用0長(zhǎng)度的byte數(shù)組充當(dāng)同步鎖對(duì)象,不會(huì)產(chǎn)生很詫異的錯(cuò)誤同時(shí)不會(huì)占用很大內(nèi)存。

相關(guān)文章

  • 淺談Java多線程處理中Future的妙用(附源碼)

    淺談Java多線程處理中Future的妙用(附源碼)

    這篇文章主要介紹了淺談Java多線程處理中Future的妙用(附源碼),還是比較不錯(cuò)的,需要的朋友可以參考下。
    2017-10-10
  • java 隨機(jī)生成6位短信驗(yàn)證碼實(shí)例代碼

    java 隨機(jī)生成6位短信驗(yàn)證碼實(shí)例代碼

    這篇文章主要介紹了java 隨機(jī)生成6位短信驗(yàn)證碼的實(shí)例代碼,文中給大家擴(kuò)展介紹了java隨機(jī)生成四位數(shù)字驗(yàn)證碼的方法,需要的朋友可以參考下
    2019-12-12
  • springboot的@Value中#和$區(qū)別詳解

    springboot的@Value中#和$區(qū)別詳解

    這篇文章主要介紹了springboot的@Value中#和$區(qū)別詳解,@Value注解的作用主要可以給屬性直接賦值、也可以讀取配置文件中的值給屬性賦值,需要的朋友可以參考下
    2023-11-11
  • java的SimpleDateFormat線程不安全的幾種解決方案

    java的SimpleDateFormat線程不安全的幾種解決方案

    但我們知道SimpleDateFormat是線程不安全的,處理時(shí)要特別小心,要加鎖或者不能定義為static,要在方法內(nèi)new出對(duì)象,再進(jìn)行格式化,本文就介紹了幾種方法,感興趣的可以了解一下
    2021-08-08
  • jsp+dao+bean+servlet(MVC模式)實(shí)現(xiàn)簡(jiǎn)單用戶登錄和注冊(cè)頁(yè)面

    jsp+dao+bean+servlet(MVC模式)實(shí)現(xiàn)簡(jiǎn)單用戶登錄和注冊(cè)頁(yè)面

    這篇文章主要介紹了jsp+dao+bean+servlet(MVC模式)實(shí)現(xiàn)簡(jiǎn)單用戶登錄和注冊(cè)頁(yè)面,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java 數(shù)據(jù)結(jié)構(gòu)算法Collection接口迭代器示例詳解

    Java 數(shù)據(jù)結(jié)構(gòu)算法Collection接口迭代器示例詳解

    這篇文章主要為大家介紹了Java 數(shù)據(jù)結(jié)構(gòu)算法Collection接口迭代器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之生活旅行分享平臺(tái)的實(shí)現(xiàn)

    Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之生活旅行分享平臺(tái)的實(shí)現(xiàn)

    這是一個(gè)使用了java+Springboot+JPA+Jsp+Html+js+Ajax+maven+mysql開發(fā)的生活旅行分享平臺(tái),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有分享發(fā)布平臺(tái)該有的所有功能,感興趣的朋友快來(lái)看看吧
    2022-02-02
  • 詳解關(guān)于eclipse中使用jdk15對(duì)應(yīng)javafx15的配置問(wèn)題總結(jié)

    詳解關(guān)于eclipse中使用jdk15對(duì)應(yīng)javafx15的配置問(wèn)題總結(jié)

    這篇文章主要介紹了詳解關(guān)于eclipse中使用jdk15對(duì)應(yīng)javafx15的配置問(wèn)題總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java中LocalDateTime的具體用法

    Java中LocalDateTime的具體用法

    本文主要介紹了Java中LocalDateTime的具體用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Java基礎(chǔ)之簡(jiǎn)單的圖片處理

    Java基礎(chǔ)之簡(jiǎn)單的圖片處理

    這篇文章主要介紹了Java基礎(chǔ)之簡(jiǎn)單的圖片處理,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04

最新評(píng)論