java - Java 中的多线程编程——方法上的差异?

标签 java multithreading

我想知道以下每个线程实现之间的区别是什么,我应该在什么时候使用每个选项。

1- 实现 Runnable

  public class ClientThread implements Runnable
  {
    new Thread(this).start();
    public void run()
    {...}
  }

2- 扩展线程

class ServerThread extends Thread  
{
  this.start();
  public void run()
  {...}
}

3- 我真的不熟悉的工作线程和 SwingWorker...

非常感谢

  • 您好,我在下面添加了另一个问题,它是作为答案发布的 我不小心在网络浏览器中删除了我的 cookie,谢谢..

好的,谢谢你提供的所有信息..
但是,如果我想为 swing 游戏实现一个倒数计时器,我应该使用什么,它将在屏幕上与游戏并行运行,而不会阻塞游戏的流程,因为后台的一致计时器将显示在那里,并且可能会需要在事件派发线程上运行...

我可以使用 Runnable 实现还是必须使用 swing worker?

最佳答案

  1. 这是首选方式,因为它分离了提供线程应该运行的代码(Runnable 实例的工作)和管理线程的工作(Thread 实例),并且还允许让 Runnable 成为其他对象的子类
  2. 不太干净,但效果一样好
  3. “工作线程”是与主应用程序并行运行的线程的概念名称。 SwingWorker 是一个设计用于在 Swing 应用程序中实现 worker tread 的类。它为工作线程提供了一个 API,用于将其状态传达给 Swing 事件线程,以便它可以,例如更新进度条。

请注意,手动处理线程通常非常困难。如果出于性能原因需要多个线程,最好通过 Executors 使用线程池。类。

关于java - Java 中的多线程编程——方法上的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197131/

相关文章:

java - System.loadLibrary 在 java 1.6 上失败但在 java 1.5 上工作

java - 我需要使用多个 AsyncTask 子类吗?

c++ - 使用 C++11 配置 Eclipse

Linux 应用程序在 pthread_create() 中崩溃

java - 在 Java 中用两个线程打印数字 1-20

java - 如何以编程方式获取依赖项的 SCM 连接 URL?

java - 在 Mac 和 PC 上运行的 .NET 和 Java 之间进行选择

java - JavaSE 和 JavaEE 之间的主要区别是什么?

java - Spring中的多线程JMS接收

c# - WPF/C# 取消 DoWork 外部的 BackgroundWorker 调用