【发布时间】:2014-10-12 12:54:48
【问题描述】:
我最近阅读了implementing Runnable 或Extending thread 和最后Implementing Callable 在java 中创建线程的信息。 stackoverflow 上的Runnable Versus Callable 线程描述了引用both are designed for classes whose instances are potentially executed by another thread 的差异。这是什么意思?它会创建新线程吗?如果是,为什么我们需要将实现Runnable 的类传递给Thread 构造函数?
另外,我看到了implementing Runnable或Extending thread创建线程的方法。在第一种方法中,(在我找到的教程中),我们需要调用Thread 类,它需要Runnable 实例来启动线程。但是,我找不到与Callable 类似的东西,因为没有接受Callable 的线程构造函数。 Executor framework 或 Future Task 用于运行这些线程。那为什么我们说两种方式都是一样的(除了 Callable 会重新运行一些东西并且可以抛出异常)。
最后,正在写
Thread t = new Thread();
Thread t1 = new Thread(new RunnableInstance());
这些是否会在系统中创建新线程?有没有其他方法可以使用Runnable 创建新线程而不将其作为构造函数传递给Thread 类?
这不应该是重复的问题。
【问题讨论】:
-
Executors 是在 Java 中创建线程的现代方式,其中开发人员对线程有更多的处理并且它有线程池。
ExecutorService#submit你也提交了可运行的实例。 -
@SubhrajyotiMajumder 感谢您的回复。你能回答所有其他的问题吗?您的评论只是部分回答了它。
标签: java multithreading runnable callable