sleep導致資料的更新問題 緩衝層更新問題

2021-10-20 11:06:41 字數 709 閱讀 5286

public

class

test

system.out.

println

(i);}}

.start()

; timeunit.seconds.

sleep(1

);running =

false

; system.out.

println(1

);}}

程式無法退出。

原因是running值改變沒有被更新到子執行緒(另乙個執行緒)中。

主線程(右) 不會將資料更新到記憶體,而子執行緒(i++)也不會從記憶體中讀取資料,只從l1緩衝層讀取

終止(更新)的方式:

0.runnning用volatile修飾

1.將running放在sleep前

2.在子執行緒中使用running即將他啟用,讓它得以更新比如使用它(輸出,給其他資料賦值)。

3.將boolean型修改為long,條件改為running==1 也是不行,猜測作為條件使用到共享變數時是無法更新資料的

4.將sleep改為timeunit.milliseconds.sleep(1)也能退出;

請大佬指點。

RecyclerView的資料更新問題

相信很多人都應該知道recyclerecyclerview的基本用法,如果不知道,請參考 概覽 好了,假設你已經基本了解了recyclerview的用法,正如上述文章中講的那樣,recyclerview跟listview不一樣,當我們想要更新資料的時候,有兩種情況 1 dataset為list,也通...

vue 非同步資料更新問題

記錄一下出現的問題,資料翻倍 這是復現問題的 data methods console.log 此時的this.allresult this allresult watch mounted 結果 此時你可以看到第二次的資料時 是 第一次的 2倍 mounted 和 watch 都執行 getmess...

關於ViewPager的資料更新問題小結

今天工作中遇到了這個糾結的問題,在viewpager中呼叫pageradapter.notifydatasetchanged 方法,好像沒有任何作用,相應的view也沒有更新資料,根據官方api是這樣解釋的 大概是說明adapter會自動管轄viewpager每一頁 item 的狀態,而notify...