1.7.7釋放鎖的不良后果

使用stop()釋放鎖將會給數據造成不一致的結果。如果出現這樣的情況,程序處理的數據就有可能遭到破壞,最終導致程序執行的流程出錯,一定要特別注意。

/**
 * @author wuyoushan
 * @date 2017/3/27.
 */
public class SynchronizedObject {
    private String username="a";
    private String password="aa";

    public void printString(String username,String password){
        try{
            this.username=username;
            Thread.sleep(100000);
            this.password=password;
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

/**
 * MyThread線程測試
 * @author wuyoushan
 * @date 2017/3/21.
 */
public class MyThread extends Thread {

    private SynchronizedObject object;

    public MyThread(SynchronizedObject object) {
        this.object = object;
    }

    @Override
    public void run() {
       object.printString("b","bb");
    }
}

/**
 * @author wuyoushan
 * @date 2017/3/20.
 */
public class Run {
    public static void main(String[] args){
        try{
            SynchronizedObject object=new SynchronizedObject();
            MyThread thread=new MyThread(object);
            thread.start();
            Thread.sleep(500);
            thread.stop();
            System.out.println(object.getUsername()+" "+object.getPassword());
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }
}

程序的運行結果如下:

b aa

由于stop()方法已經在JDK中被標明是“作廢/過期”的方法,顯然它在功能上具有缺陷,所以不建議在程序中使用stop()方法

摘選自 java多線程核心編程技術-1.7.7

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,349評論 25 708
  • 定制日期格式您可以通過 IBM? TRIRIGA? Application Platform 隨附的產品定義不同的...
    Seachal閱讀 1,065評論 0 0
  • 為什么總是走不出自己的舒適圈?是時候該改變了,沒有人能阻止你追求更高的人生。 丁字形知識結構怎么建?工作怎么努力?...
    Tina26閱讀 133評論 0 0