是否可以从线程同时执行相同的功能。我怀疑,在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)。 –