创建线程后传Runnable参数并实现run方法,可以采用下面两种方式,效果是一样的
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
// 这里是线程应该执行的代码
System.out.println("Hello, World!");
}
});
//上面代码t1的简化写法如下 见thread2创建
Thread thread2 = new Thread(() -> {
System.out.println("Hello, World!");
});
对于线程池中提交任务代码,也可以这样简化:可以采用下面两种方式,效果是一样的
public class ThreadPoolTest {
//线程池
static final ThreadPoolExecutor executor = new ThreadPoolExecutor(9, 16, 60L,
TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), Executors.defaultThreadFactory());
public static void main(String[] args) {
//向线程池中提交10个任务,
for (int i = 0; i < 4; i++) {
executor.execute(new Runnable() {
@Override
public void run() {
handle();
}
});
}
}
private static void handle() {
}
}
简化后:
public class ThreadPoolTest {
//线程池
static final ThreadPoolExecutor executor = new ThreadPoolExecutor(9, 16, 60L,
TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), Executors.defaultThreadFactory());
public static void main(String[] args) {
//向线程池中提交10个任务,
for (int i = 0; i < 4; i++) {
executor.execute(() -> handle());
}
}
private static void handle() {
}
}
很明显其中的 executor.execute()中传的参数还是Runnable类型,只不过这个类型参数中的run方法中只有一行调用handle()方法的代码,所以简化完之后就变成了 executor.execute(() -> handle()); 这个还需要多多使用,慢慢就熟练了。
标签:lamda,handle,void,线程,executor,new,多线程,public,表达式 From: https://blog.csdn.net/qq_39666711/article/details/140665420