java新增了哪些创建线程的方式

发布时间:2020-06-03 15:21:40 作者:Leah
来源:亿速云 阅读:241

java创建线程的方式有哪些?针对这个问题,今天小编总结这篇有关java创建线程的文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。

方式一:实现Callable接口

好处:
(1)与使用Runnable相比,Callable功能更强大些
(2)相比run()方法,可以有返回值
(3)方法可以抛出异常
(4)支持泛型的返回值
(5)需要借助FutureTask类,比如获取返回结果
Future接口:
1)可以对具体的Runnable\Callable任务的执行结果进行取消、查询是否完成、获取结果等
2)FutureTask是Future接口唯一的实现类
3)FutureTask同时实现了Runnable,Future接口。
【它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值】

创建的过程和实例

java新增了哪些创建线程的方式

//1.创建实现类
class NumThread implements Callable {
//2.重写call()方法
    @Override
    public Object call() throws Exception {
        int sum=0;
        for(int i=1;i<=100;i++){
            if(i%2==0){
                System.out.println(i);
                sum+=i;
            }
        }
        return sum;
    }
}
public class ThreadNew {
    public static void main(String[] args) {
        //3.创建实现Callable接口的实例对象
        NumThread numThread = new NumThread();
    //4.将实现类的对象作为参数传递到FutureTask构造器,创建 FutureTask对象
        FutureTask futureTask = new FutureTask(numThread);
    //5.将FutureTask的对象作为参数传递到Thread类的构造器中,并调用start()
        new Thread(futureTask).start();
//6.需要的话,可以借助FutureTask的对象进行一系列操作
        try {
            //get()返回值为FutureTask构造器参数Callable实现类重写的call()的返回值
            Object sum = futureTask.get();
            System.out.println("总和:"+sum);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}

java新增了哪些创建线程的方式

方式二:使用线程池

好处:

1)提高响应速度--减少创建新线程的时间
2)降低资源消耗--重复利用线程池中的线程,不需要每次都创建
3)便于线程管理:
corePoolSize:核心池的大小
maximumPoolSize:最大线程数
keepAliveTime:线程没有任务时最多保持多长时间会终止
线程池相关API--ExecutorService和Executors
ExecutorService:真正的线程池接口,常见子类ThreadPoolExecutor
Executors:工具类、线程池的工厂类。用于创建并返回不同类型的线程池
java新增了哪些创建线程的方式

java新增了哪些创建线程的方式
综上所述,创建线程的两种方式各有各的优点,具体使用还要根据自己情况选择其中一种方式,如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. java创建线程的方式有几种?
  2. Java有几种创建线程的方式

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

创建线程 java ava

上一篇:phpcms v9中某些默认的文件路径

下一篇:xcode armv6 armv7 armv7s arm64指令集

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》