ExecutorService executor = Executors.newFixedThreadPool(2);
-上述语句创建了一个固定大小为 2 的 ThreadPool。
executor.execute(new Worker());
-上面的语句采用了实现Runnable
接口的类 Worker 的实例。
-现在这里Executors
是一个中间对象,执行任务。它管理线程对象。
-通过执行上述语句,该run()
方法将被执行,一旦run()方法完成,线程不会进入死状态而是移回池中,等待分配另一个工作,因此它可以再次移动进入 Runnable 状态然后运行,这一切都由 Executors 处理。
executor.shutdown();
-上面的语句将关闭 Executors 本身,优雅地处理由它管理的所有线程的关闭..shutdown()
在该中心对象上,这反过来可以终止每个注册的 executors。
////////// Edited Part//////////////////////
-首先Runnable有一个run()方法不能返回任何东西,而run()方法不能抛出检查异常,所以Java 5中引入了Callable,它是Parametric类型的,有一个方法叫call(),它能够返回和抛出 Checked 异常。
现在看这个例子:
Thread t = new Thread(new Worker());
t.run();
t.start();
- t.run()
只是对run()
方法的简单调用,这不会跨越thread of execution
.
-while t.start()
为 的 的重要的事情做准备initialization
,thread of execution
然后调用的run()
方法Runnable
,然后将 分配给新形成Task
的,然后快速返回.... thread of execution
Swing
使用和时,Java 中的线程成为必需品AWT
。主要是 GUI 组件。