java - Java 线程什么时候处于 Activity 状态?

标签 java multithreading

这是一个关于 Java 线程词汇的非常基本的问题。

我看不到任何可能的重复项,但可能存在。

这个词是什么意思alive 引用 Oracle 文档?

是在run()方法尚未完成时还是有其他参数?

最佳答案

根据您提到的 Javadoc:

A thread is alive if it has been started and has not yet died.

线程在其 start() 方法被调用时“启动”,并在其 run() 方法结束时或在 stop 时“死亡” ()(现已弃用)被调用。所以,是的,当线程的 run() 方法仍在执行时,它是“Activity 的”,但在调用 start() 之间的时间窗口中,它也是“Activity 的” > 以及 JVM 对 run() 方法的隐式调用。

您还可以查看 Thread.getState()interesting information about Thread States由@Marou Maroun 建议。

我还遵循他的建议,警告您,如果抛出异常并传播到 run 之外,线程可能会提前结束。在这种情况下,线程将不再存在。

编辑:根据@zakkak的建议,即使run()方法尚未启动,线程也可以被认为是 Activity 的。如果您想正确控制何时调用它,请使用 ScheduledExecutorService ,特别是 schedule()方法可以为您提供更精确的执行计划。

关于java - Java 线程什么时候处于 Activity 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61707005/

相关文章:

java - Spring 休息: How to validate Date passed in request body

java - 通过查询字符串的 REST api

C# BackgroundWorker 和 Com 端口问题

java - 如何将 eclipse 中的 libgdx 项目从 Windows 传输到 Linux,反之亦然?

java - 使用 SCL010 获取 Mifare Ultralight 的 UID

java - 这是没有 volatile 和同步开销的更好版本的 Double Check Locking

multithreading - 为什么使用互斥体而不是 boolean 变量进行线程同步?

c - 在多线程程序中调用 tpinit 和 tpterm 函数时速度缓慢

C#线程池跨线程通信

java - 如何从数组中打印出一个随机字符串