如果我創建了兩個運行到Java中兩個不同線程的對象。如果其中一個對象在另一個對象中調用一個方法。方法是運行在調用方法的對象的線程還是運行方法的對象的線程中?哪個線程負責Java中的內容
2
A
回答
6
該方法在調用它的線程中運行。
類或對象不在線程中運行,而是代碼執行。所以重要的是調用對象方法的哪個線程。
正如Thilo所說:類和對象根本不運行。
+3
類不運行(根本)。 – Thilo
+0
@Thilo:確切地說,但這是OP暗示應該發生的事情。 –
1
除非一個線程被顯式啓動,或者被調用的方法在另一個線程(例如Swing Worker)中運行任務,否則它是同一個線程。
在任何情況下,啓動新線程的代碼都在當前線程中運行並指示JVM啓動一個線程。
每個線程都是一個獨立的執行行,與類或對象無關(除了多線程嘗試訪問同一個對象;我們在那裏鎖定),並且可以在其生命週期中訪問許多類和對象。
相關問題
- 1. 哪個Java線程負責PostgreSQL數據庫進程?
- 2. 哪些機制負責在Java中
- 3. 哪些指令負責將總線映射到內存中?
- 4. JS/PHP:誰負責生成內容?
- 5. MVVM:哪個組件負責導航?
- 6. 哪個組件負責設置regionManager?
- 7. 哪個'層'負責驗證數據
- 8. 哪個jar負責解析hibernate.cfg.xml?
- 9. 哪個系統組件負責在Java應用程序中綁定Unicode連字?
- 10. MFC:對哪個線程負責導致崩潰的故障排除
- 11. 在一個操作系統中,誰負責線程取消?
- 12. 的UIButton中的UIView內嵌不負責
- 13. 哪個函數負責渲染引擎中的vue.js中的DOM?
- 14. 什麼內核線程負責在Linux內核中發送網絡包
- 15. 哪個進程/任務負責數據塊複製?
- 16. 加載插件應負責哪一層?
- 17. 使固定div之間的內容負責
- 18. 在Linux中,哪一個軟件負責繪製鼠標光標?
- 19. 誰負責釋放分配的內存?
- 20. 發現哪個CSS規則負責任何元素的格式
- 21. Android框架的哪個部分負責播放動畫?
- 22. CPU負載中的Java多線程
- 23. C++內存管理:誰負責
- 24. 誰負責在同一個進程中運行多個AppDomain?
- 25. 存儲庫和工作單元 - 哪個負責?
- 26. 哪個Modernizr功能負責瀏覽器檢測?
- 27. 哪個類負責實現Bootstrap類加載器?
- 28. 哪個特定優化標誌負責優化輸出變量
- 29. 哪個文件負責在主頁上顯示產品virtmart
- 30. 哪個類應該負責狀態並清理資源?
如果一個線程上的代碼調用另一個線程也可訪問的對象的方法,則必須開始考慮線程安全性。 – Thilo
擁有「對象是狀態加行爲」(鬆散地說,對象是數據加上對其進行操作的代碼)的觀點是正確的。然而,當一個對象被創建時,理解它實際上只是分配到堆上的對象的狀態(例如實例字段等)。該對象的代碼庫由該類的所有對象(即使是非靜態代碼)「共享」。無論如何,這正是你想要的。併發問題幾乎總是由對象狀態的交錯訪問引起的,並且幾乎不會由交錯訪問代碼引起。 – scottb