我最近开始探索Java Executor框架.所有执行程序都设计为接受Runnable或Callable.为什么执行者不接受Thread作为输入?
在谈论并发时,始终区分线程和任务非常重要.
甲任务只是一块工作应该做-通常表示为Runnable(或Callable在情况下的任务产生的结果).
甲线程是使得一个机构的任务并行地执行.
一个Executor或是ExecutorService一个能够执行任务的工具.根据实现,此执行程序可能能够并行执行多个任务 - 通常是在内部使用线程.
因此,如果您正在使用Executor或ExecutorService,您将交付任务,因此Runnable执行并让执行程序为您管理其线程.
注意:作为java.lang.Thread实现Runnable,可以实例化a Thread并将其传递给execute(...).这是一件非常糟糕的事情,因为执行程序只会调用run()线程的方法,就像它是一个任务一样,并且不会启动线程.它不被认为是以这种方式使用 - 如果你在某个地方看到它:这是错的!
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |