簡體   English   中英

如何從另一個線程或進程中提取數據(Android / Java)

[英]How do I pull data from another thread or process (Android/Java)

我知道允許進程間通信的概念。 我的程序需要啟動第二個線程。 我知道如何從Java / Android將數據從一個線程傳遞或“推”到另一個線程,但是我還沒有看到很多有關“拉”數據的信息。 子線程需要經常在父線程上獲取數據。 怎么做?

由於線程共享內存,因此您只能使用線程安全的數據結構。 請參考java.util.concurrent。 該軟件包中的所有內容都是針對多線程情況而設計的。

在您的情況下,您可能要使用LinkedBlockingQueue。 這樣,父線程可以將事物放入隊列,而子線程可以在需要時將其抓取。 如果隊列為空,它還允許子線程阻塞。

您可能會混淆線程和數據。 線程是代碼執行的行,可以對某些數據進行操作,但它們本身不是數據,並且不包含數據。 數據包含在內存中,線程由CPU(或vm或您選擇的任何級別)執行。

無論數據是否在線程中完成,您都可以用相同的方式訪問數據。 那就是您使用變量或對象字段等。但是對於線程,您需要確保在線程並發訪問相同數據時不發生競爭條件。

總而言之,如果您有一個由線程執行某些方法的對象,則只要確保同時只有一個線程可以執行此操作,就仍可以常規方式從該對象獲取數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM