是否可以從線程同時執行相同的功能。我懷疑,在java方法區域是相同的,所以多次調用相同的功能可能會導致等待狀態,我是否正確?Java同時執行相同功能
0
A
回答
1
是的,這是可能的,除非你使用同步那裏不會有任何等待鎖定。這是默認行爲,不可以交叉鎖定和線程執行。
雖然請記住,您的線程調度程序將允許一個線程在給定的時間運行。
默認情況下,在沒有同步的情況下併發訪問沒有等待就是行爲。
樣品在於向世人證明
public class MyThread implements Runnable {
private MyThreadInvocation threadInvocation = null;
public MyThread(MyThreadInvocation threadInvocation) {
this.threadInvocation = threadInvocation;
}
@Override
public void run() {
System.out.println("Calling from : " + Thread.currentThread().getName());
this.threadInvocation.printMessage();
}
}
public class MyThreadInvocation {
public void printMessage(){
System.out.println("Hello");
}
public static void main(String[] args) {
MyThreadInvocation myThreadInvocation = new MyThreadInvocation();
Thread t1 = new Thread(new MyThread(myThreadInvocation));
t1.setName("First Thread");
Thread t2 = new Thread(new MyThread(myThreadInvocation));
t2.setName("Second Thread");
Thread t3 = new Thread(new MyThread(myThreadInvocation));
t3.setName("Third Thread");
t1.start();
t2.start();
t3.start();
}
}
2
葉氏。您可以默認執行方法的併發執行。要停止併發執行,您需要使用同步關鍵字或併發類
1
是的,完全可以從多個線程同時調用相同的函數。每個線程都有自己的堆棧,這意味着它獲得了函數中使用的局部變量的副本。
在多核機器上,線程甚至可能在同一個函數中同時運行。
當然,如果從多個線程同時調用相同的函數,如果它們訪問相同的可變狀態(例如,線程讀取和寫入的對象中的字段)可能會導致問題。如果您想防範這些問題,您需要使用某種形式的鎖定或同步。
相關問題
- 1. 相同功能的相同功能
- 2. 如何在運行時重新執行相同的功能
- 3. Java同時執行
- 4. 執行三個功能同時
- 5. 同步執行功能
- 6. 在啓動相同功能之前停止執行JQuery功能
- 7. 爲不同的類執行相同的功能
- 8. 相同功能
- 9. 對具有相同步驟定義的cucumberjs執行不同功能時出錯
- 10. 不能執行相同的PowerShell功能兩次,給出錯誤
- 11. DRY - 多行代碼執行相同的更新功能
- 12. 相同的功能,不同的行爲時間
- 13. 結合多個相同的Java功能
- 14. 流星執行功能同步
- 15. 如何在angularjs功能同步執行
- 16. 同步執行異步功能
- 17. 寧靜路由 - 兩個用戶看到,執行相同功能
- 18. Listview itemtap執行相同的控制器功能
- 19. 對多個功能輸入執行相同的操作
- 20. 我無法PHP中多次執行相同功能
- 21. 如何在mootools的jquery中執行相同的功能/函數
- 22. 多次執行相同功能後,逐幀播放MovieClip
- 23. 2個功能同時執行。可能嗎?
- 24. 運行通過相同的功能
- 25. Rcpp功能比相同R功能
- 26. 評估不同條件下執行相同功能的通用方法
- 27. 多個按鈕調用相同的功能,並執行不同的方法
- 28. 在同一事件的所有控制器中執行相同的功能 - AngularJS
- 29. 執行功能的同時運行腳本
- 30. 平行執行的功能,同時完成代碼
答案是否定的,除非你使用'synchronized'關鍵字。閱讀[在這裏]教程(http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html)。 –