【问题标题】:Thread with runnable vs without runnable [duplicate]具有可运行与不具有可运行的线程[重复]
【发布时间】:2015-10-11 00:04:51
【问题描述】:

能否请您简要说明以下线程实现之间是否存在显着差异:

// Method 1
Thread aThread = new Thread()
{
    @Override
    public void run()
    {
        // do some work
    }
};

aThread.start();

// Method 2      
Thread bThread = new Thread(new Runnable()
{
    @Override
    public void run()
    {
        // do some work
    }
});

bThread.start();

我试图在stackoverflow中找到类似的问题,但没有成功。抱歉,如果之前已经讨论过。

【问题讨论】:

标签: java multithreading runnable


【解决方案1】:

根据 Javadoc:

https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#run--

Thread 的默认 run() 方法会执行 Runnable 创建时使用的 run() 方法(如果存在)。否则它什么也不做。这意味着创建带有RunnableThread 与覆盖Threadrun() 具有相同的作用,只是它为附加函数调用使用了更多的堆栈。

所以没有。没有显着差异。

【讨论】:

  • 如果您要说As per the Javadoc,请务必包含一个链接。
  • @JaredBurrows 完成。谢谢你的建议。
  • 我没有对你投反对票,但无论如何这是一个重复的问题。
  • 没关系。无论如何,这是一个很好的建议。
  • Tripp Kinetics,谢谢你的回答,我赞成。我需要在 google 中搜索一下以了解您所写的有关堆栈的内容。
猜你喜欢
  • 2014-03-19
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 2014-09-02
  • 1970-01-01
  • 2014-09-17
相关资源
最近更新 更多