Java多线程Callable接口、线程池

Callable和runnable对比

  • 相比run()方法,可以有返回值 
  • ’方法可以抛出异常
  • 支持泛型的返回值
  • 需要借助FutureTask类,比如获取返回结果

 

Future接口 

  • 可以对具体Runnable、Callable任务的执行结果进行取消、查询是 否完成、获取结果等。 
  • FutrueTask是Futrue接口的唯一的实现类
  • FutureTask 同时实现了Runnable, Future接口。
  • 它既可以作为 Runnable被线程执行,又可以作为Future得到Callable的返回值

 

什么是线程池?

提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。

复制代码
package www.fancy.thread4;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

class NumberThread implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i <= 100; i++) {
            if (i % 2 == 0) {
                System.out.println(Thread.currentThread().getName() + i);
            }
        }
    }
}

public class ThreadPool {
    public static void main(String[] args) {
        //提供制定线程数量的线程池
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        //指定执行线程的操作
        executorService.execute(new NumberThread());//用于Runnable接口
        //关闭线程池
        executorService.shutdown();
    }
}
复制代码

 

posted @   Fancy[love]  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示