我知道允許進程間通信的概念。我的程序需要啓動第二個線程。我知道如何從Java/Android中將數據從一個線程傳遞或推送到另一個線程,但我沒有看到有關「拉取」數據的大量信息。子線程需要經常抓住父線程上的數據。這是如何完成的?我如何從另一個線程或進程中獲取數據(Android/Java)
回答
由於線程共享內存,您可以使用線程安全的數據結構。一些參考java.util.concurrent。該軟件包中的所有內容均專爲多線程情況而設計。
就你而言,你可能想要使用LinkedBlockingQueue。通過這種方式,父線程可以將東西放入隊列中,並且子線程可以在喜歡的時候抓住它。如果隊列爲空,它也允許子線程阻塞。
您可能會混淆線程和數據。線程是代碼執行的行,它可以對某些數據進行操作,但它們本身不是數據,也不包含數據。數據包含在內存中,線程由CPU(或vm或您選擇的任何級別)執行。
您以相同的方式訪問數據,無論是否在線程中完成。那就是你使用變量或對象字段等。但是對於線程,你需要確保在線程同時訪問相同數據時不會出現競爭狀態。總之,如果你有一個對象有一個由線程執行的方法,只要你確保只有一個線程同時執行它,你仍然可以以常規的方式從這個對象獲取數據。
我認爲@ user966005令人困惑的是進程間和進程內而不是數據。 – Merlin
對於我'子線程需要在父線程中獲取數據'聽起來像是一個用詞不當。但除非他澄清,否則肯定很難說出問題所在。 –
- 1. 從另一個線程寫入陣列中獲取數據
- 2. 如何從Java中的另一個線程的一個線程中獲取數據?
- 3. 如何從另一個進程/內核線程中搶佔一個進程?
- 4. 我如何從另一個線程
- 5. 從另一個進程獲取信息
- 6. 在另一個進程中獲取線程的EBP
- 7. 從工作者線程獲取數據到另一個
- 8. 如何從子線程或其他線程獲取父線程?
- 9. 如何從另一個Android應用程序獲取數據
- 10. Java Swing應用程序:如何從GUI線程獲取數據到另一個線程?
- 11. 如何獲取一個進程在Bash中的另一個進程的PID?
- 12. 線程交互(從一個線程到另一個線程的數據)c#
- 13. 從線程中獲取數據從XML?
- 14. 從C++中的另一個進程解鎖一個線程
- 15. UI線程如何知道另一個線程上的數據?
- 16. 如何將數據從一個線程傳遞到另外三個線程?
- 17. 從另一個線程加載數據,線程安全嗎?
- 18. 如何從監視器中斷另一個線程線程
- 19. 卡在從另一個線程獲取數組
- 20. 獲取另一個進程'QueryPerformanceCounter()
- 21. 如何確定從另一個線程創建哪個線程?
- 22. 從另一個線程操作線程
- 23. 從另一個線程運行線程
- 24. 如何從另一個線程
- 25. 如何從另一個線程
- 26. 如何從另一個線程
- 27. C#.NET中的線程和交叉線程,如何從另一個線程中更改ComboBox數據?
- 28. 從另一個線程捕獲異常
- 29. C#,C++,WinAPI - 從另一個進程獲取窗口數
- 30. shared_from_this()從另一個線程(一個成員線程函數)
您是否需要比共享內存更多的東西? –