最近我在阅读有关在Java中创建线程的内容,包括通过
此外,我看到创建线程的方法有两种:一种是通过
最后,要写的是:
实现Runnable
、扩展Thread
以及最后一个实现Callable
的方式。StackOverflow上的Runnable与Callable比较线程描述了区别,引用到:“两者都是为那些实例有可能被其他线程执行的类而设计的。”这是什么意思?它是否会创建新的线程?如果是的话,为什么我们需要将实现Runnable
接口的类传递给Thread
构造函数?此外,我看到创建线程的方法有两种:一种是通过
实现Runnable
或扩展Thread
来实现的。在第一种方法中(在找到的教程中),我们需要调用Thread
类,该类需要Runnable
实例来启动线程。但是,我没有找到类似Callable
的东西,因为没有一个Thread构造函数接受Callable。为了运行这些线程,通常使用Executor Framework
或Future Task
。那么,为什么我们说这两种方式是相同的(除了Callable返回值和可以抛出异常)?最后,要写的是:
Thread t = new Thread();
Thread t1 = new Thread(new RunnableInstance());
这些操作会在系统中创建新线程吗?除了将它作为构造函数传递给 Thread
类,还有其他使用 Runnable
创建新线程的方法吗?
这不应该是一个重复的问题。
ExecutorService#submit
方法,您可以提交可运行实例。 - Subhrajyoti Majumder