是否有其他可能性来创建线程,Java中的任务不扩展Thread或实现Runnable,Callable <v>?</v>

时间:2014-02-01 16:49:58

标签: java multithreading

我知道三种创建线程的方法,Java中的任务。在求职面试中,有人问我是否有可能以其他方式在Java中创建线程。有可能吗?如果是,请举一些例子。

3 个答案:

答案 0 :(得分:11)

在Java中创建线程的唯一方法是创建一个Thread对象并starting

引用java language specification

  

用户创建线程的唯一方法是创建此类的对象;每个线程都与这样的对象相关联。在相应的Thread对象上调用start()方法时,线程将启动。

RunnableCallable是JDK用于提交要在线程中执行的代码的两个接口。例如,在其各种java.util.concurrent类中。

答案 1 :(得分:1)

按照惯例,

Runnable是一个接受Thread的构造函数参数的接口。您可以扩展Thread,以便子类的构造函数接受任何其他类型的参数。类似地,java.util.concurrent中的线程池接受Callable。您可以开发其他类型的线程池,它们可以接受任何其他类型的任务。

答案 2 :(得分:1)

匿名创建一个主题。例如,如下所示:

import java.util.Date;
class TestDemo
{
    public static void main(String[] args)
    {
        Thread t = new Thread()
        {
            public void run()
            {
                while(true)
                {
                    System.out.println(new Date());
                    try
                    {
                        Thread.sleep(1000);
                    }catch(Exception e){}
                }
            }
        };
        t.start();
    }
}