当前位置: 首页 > 面试题库 >

实现可运行与扩展线程

陆文康
2023-03-14
问题内容

为什么实现Runnable比从Thread类扩展更好的选择?


问题答案:

这样,您就可以 计算( what )与执行( when 和/或 how )分离。

使用RunnableCallable,您可以例如向提交许多工作/计算,Executor这将使您计划工作。这是ExecutorService的摘录形式:

pool = Executors.newFixedThreadPool(poolSize);
...
pool.execute(new Handler(serverSocket.accept()));
...
class Handler implements Runnable {
    ...
 }

RunnableCallable直接使用线程相比,使用/ 给您更大的灵活性。



 类似资料:
  • 问题内容: 从什么时候开始在Java中使用线程开始,我发现了以下两种编写线程的方法: 与implements Runnable: 或者,使用extends Thread: 这两个代码块有什么显着区别吗? 问题答案: 是的:是首选的工具。您并不是真的专门研究线程的行为。您只是给它一些运行的机会。这意味着合成是从哲学上讲“更纯净”的方式。 在实践方面,它意味着你可以实现从另一个类扩展为好。

  • 问题内容: Java 线程本身实现了Java !并且根据Internet上的大多数专家的说法,首选Runnable而不是Extended Thread!即使我们没有Thread类也无法在线程意义上使用利用Runnable! 那么为什么我们宁愿实现而不是扩展,因为在两种情况下实际线程都是通过调用已实现的方法(即或)来声明的,尽管在我们不是仅通过重写方法来真正“扩展”功能的情况下? 如果我感到困惑,我

  • 关于Quarkus,我有两个问题: > 当不使用本机模式时,quarkus可以与任何java库一起使用吗?我不明白quarkus扩展的含义,例如https://github.com/quarkiverse中为非本机图像提供的扩展。这些扩展是否只有在本机模式下使用quarkus时才需要?

  • 启动并行处理最简单的方式就是在 Step 配置中加上一个TaskExecutor , 比如,作为 tasklet 的一个属性: <step id="loading"> <tasklet task-executor="taskExecutor">...</tasklet> </step> 上面的示例中, taskExecutor指向了另一个实现 TaskExecutor 接口的Bean. T

  • SPI 扩展接口仅用于系统集成,或 Contributor 扩展功能插件。

  • 问题内容: 我试图找出扩展Thread类的可能的优点是什么? 这是我描述的另一个问题的一部分:在Java中有两种创建线程的方法 从Thread类扩展 实现可运行的接口 如此处所述,使用可运行接口有许多好处。我的问题是从Thread类扩展的优点是什么?我想到的唯一好处是可以从Thread类扩展,并且可以称其为ThreadExtended类。然后,他/她可以在ThreadExtended中添加更多功能