java - 线程启动方法需要什么?为什么不只有运行方法?

标签 java multithreading

<分区>

什么需要通过start方法来运行线程?为什么我们不直接调用运行方法?

What will happened if combined the code of start() and run() 
to make it as single method run()

不解释这两种方法之间的区别,我想知道这种情况。

最佳答案

当程序调用 start() 方法时,会创建一个新线程并在新线程中执行 run() 方法中的代码,而如果直接调用 run() 方法,则不会创建新线程并在 run() 中执行代码将在当前线程上执行。

  • 每个线程都在一个单独的调用堆栈中启动。

  • 从主线程调用 run() 方法,run() 方法进入当前调用堆栈,而不是新调用堆栈的开头。

请引用What if we call run() method directly instead start() method?另请阅读 Difference between start and run method in Thread

关于java - 线程启动方法需要什么?为什么不只有运行方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24843040/

相关文章:

java - Jenkins maven 还有其他 java 版本。如何解决?

java - java.io.FileNotFoundException即使文件路径正确

c# - 在 Windows 服务中保持 C# Mutex 事件

java - ThreadLocal 反模式的替代品?

java - Spring-data-neo4j 获取子项时出现 NullPointerException

java - 使用 Tomcat 对 json POST 的错误请求

java - 类加载器返回 NoSuchMethodException 错误

linux - 使用 pthread 的工作队列

multithreading - 在Vec上实现并行/多线程合并排序

c# - 我如何测试 FileSystemWatcher 引发正确的事件?