首先来认识几个关键字
Executor是一个接口,需要实现其中的execute(Runnable command)方法,需要将一个实现Runnable接口的类传进去
可以实现一个类继承runable方法,在execute()方法中重新new Thread(Runnable runable)放进去然后调用.start()方法
package com.mo;
/**
* Executor是一个接口,需要实现其中的execute(Runnable command)方法,需要将一个实现Runnable接口的类传进去
* 可以实现一个类继承runable方法,在execute()方法中重新new Thread(Runnable runable)放进去然后调用.start()方法
*/
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
public class E implements Executor {
public static void main(String[] args) {
E e = new E();
E1 e1 = new E1();
e.execute(e1);
}
public void execute(Runnable command) {
new Thread(command).start();//这样是重新启动一个线程来调用
// command.run();//如果是这样就是方法的调用了,调用该方法的线程还是main线程
}
}
class E1 implements Runnable {
public void run() {
System.out.println("aaaaaaaaa");
System.out.println(Thread.currentThread().getName());
}
}
class E2 implements Executor {
public static void main(String[] args) {
E2 e2 = new E2();
E3 e3 = new E3();
e2.execute(e3);
}
public void execute(Runnable command) {
new Thread(command).start();//这里是新建一个线程
//command.run();//这样是调用run方法,不是新建一个新的线程
}
}
class E3 implements Runnable {
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
//Callable 与 Runnable 基本是一样的,不同的是Callable有返回值,而Runnabel没有返回值
1.