java - new Thread(Runnable runnableObj) 与 new Thread(Runnable runnableObj) 对比扩展线程

标签 java multithreading concurrency

Possible Duplicate:
Java: “implements Runnable” vs. “extends Thread”

我只是想知道创建自己的扩展 Thread 的自定义对象和使用 Thread(Runnable) 构造函数创建线程之间是否存在一些细微的区别?

当我使用扩展 Thread 的类时,我有一些代码可以正常工作,但是如果我尝试使用通过 Thread(Runnable) 构造函数创建线程的逻辑,则新线程似乎无法正常工作 - 我不能检测到它们仍然存在,就像我使用我制作的自定义子类时一样,并且它们似乎永远不会结束。

在我的代码中,我只是生成几个线程,然后搜索我的线程列表以找到一个存活的线程并与其连接,直到它死亡。然后我再次在列表中搜索 Activity 的线程并加入它..这将继续,直到所有线程死亡。

感谢您的阅读。

最佳答案

线程是用于工作的资源。 Runnable 是一项工作。您是在创建一种新类型的资源,还是只是定义您想要完成的工作?

要“结束”线程,您只需从“run”方法返回即可。需要查看代码示例才能了解无法判断它们是否处于 Activity 状态的含义。

创建 Runnables 当然还可以更轻松地重构代码以在将来使用 ThreadPool。

关于java - new Thread(Runnable runnableObj) 与 new Thread(Runnable runnableObj) 对比扩展线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10341105/

相关文章:

java - 无法从 fileDownloadActionListener 中的 ADF 组件获取值

java - 将 Web 内容存储在 JAR 文件中

c# - 如何每 10 秒运行一次函数?

php - 通过集群和移动进行高效的文件更新

swift - 使用队列和信号量进行并发和属性包装?

java - 从 ConcurrentMap 中获取和删除所有当前条目

java - 在Java编程中,当我们重写现有文件时,文件(.txt、.ser等)会被覆盖吗?

java - Hibernate也像JDBC一样使用连接池吗?

android - 杀死线程中的 Activity

multithreading - 多个 goroutines 访问/修改列表/ map