线程执行器和不使用线程执行器的对比(优缺点)
1.线程执行器分离了任务的创建和执行,通过使用执行器,只需要实现Runnable接口的对象,然后把这些对象发送给执行器即可。
2.使用线程池来提高程序的性能。当发送一个任务给执行器时,执行器会尝试使用线程池中的线程来执行这个任务。避免了不断创建和销毁线程导致的性能开销。
3.执行器可以处理实现了Callable接口的任务。Callable接口类似于Runnable接口,却提供了两方面的增强:
a.Callable主方法名称为call(),可以返回结果
b.当发送一个Callable对象给执行器时,将获得一个实现了Future接口的对象。可以使用这个对象来控制Callable对象的状态和结果。
4.提供了一些操作线程任务的功能
使用线程执行器的例子
**
A)执行继承了Runnable接口的任务类
**
package com.springboot.hello.thread;
public class TaskRunnable implements Runnable{
private String name ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public TaskRunnable(String name ){
this.name =name ;
}
@Override
public void run(){
try {
System.out.println(name+ " 任务执行中。。。");
Thread.sleep(15000);
System.out.println(name+ " 任务真的执行完了。。。");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ExecutorServer executorServer = new ExecutorServer();
for (int i = 0; i < 20; i++) {
TaskRunnable task = new TaskRunnable(" name-"+i);
executorServer.executorTask(task);//异步处理
}
System.out.println("main 方法走完了。。。");
executorServer.endExecutor();//直到所有进行中的任务执行完毕后才真的关闭主线程了
System.out.println