日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中解决脏读_java并发编程学习之脏读代码示例及处理

發布時間:2025/3/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中解决脏读_java并发编程学习之脏读代码示例及处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用interrupt()中斷線程 ? ??當一個線程運行時,另一個線程可以調用對應的Thread對象的interrupt()方法來中斷它,該方法只是在目標線程中設置一個標志,表示它已經被中斷,并立即返回。這里需要注意的是,如果只是單純的調用interrupt()方法,線程并沒

public class Thread10 {

public static void main(String[] args) {

Thread10_Entity entity = new Thread10_Entity();

Thread10_1 t10_1 = new Thread10_1(entity);

t10_1.start();

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(entity.get());

}

}

class Thread10_1 extends Thread {

private Thread10_Entity thread10_Entity;

public Thread10_1(Thread10_Entity t10) {

this.thread10_Entity = t10;

}

@Override

public void run() {

thread10_Entity.set("admin", "admin");

}

}

class Thread10_Entity {

private String username = "user";

private String password = "user";

synchronized void set(String username, String password) {

this.username = username;

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

this.password = password;

}

String get() {

return username + " " + password;

}

}

運行結果:admin userExecutor框架簡介 ? ??在Java 5之后,并發編程引入了一堆新的啟動、調度和管理線程的API。Executor框架便是Java 5中引入的,其內部使用了線程池機制,它在java.util.cocurrent 包下,通過該框架來控制線程的啟動、執行和關閉,可以簡化并發編程的操作。因此,

加上sleep只是為了放大錯誤,便于觀察。

有任何疑問歡迎留言或者加企鵝群(282034885)討論

那么如何避免臟讀呢?上篇文章(java并發編程學習之一段簡單代碼證明synchronized鎖的是對象)中提到過,synchronized鎖的是對象,這里就可以用上了。

在get方法上加上synchronized關鍵字即可,在set沒處理完之前,對對象加鎖,避免其他線程進行臟讀。

總結

以上是生活随笔為你收集整理的java中解决脏读_java并发编程学习之脏读代码示例及处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。