首页 技术 正文
技术 2022年11月14日
0 收藏 567 点赞 3,758 浏览 997 个字
package com.hls.juc;import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;/**
* 创建多线程的方式 : 4种
* 1.继承Thread类
* 2.实现Runable接口
* 3.实现Callable接口
* 4.使用线程池创建线程
*
* Callable相比Runable的区别:
* 1. 线程任务有返回值
* 2. 需要使用FutureTask实现类接收返回值
* 3. futureTask.get方法获取放回值时, 主线程会进入阻塞状态, 等待分线程的完成
*/
public class CallableTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
long start = System.currentTimeMillis();
CallTask callTask = new CallTask();
//使用FutureTask实现类接收返回值 泛型是返回值类型
FutureTask <Integer> futureTask = new FutureTask <>(callTask);
// new Thread(futureTask).start(); for (int i = 0; i < 100; i++) {
new Thread(futureTask).start();
} // 主线程会进入阻塞状态, 等待分线程的完成 可以用于闭锁
Integer sum = futureTask.get();
// System.out.println(sum);
long end = System.currentTimeMillis();
//计算程序消耗的时间 : 分线程全部执行完的时间 + 主线程的时间
System.out.println("程序消耗时间: " + (end - start));
}
}//泛型是call方法的返回值
class CallTask implements Callable<Integer>{ @Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i < 100; i++) {
sum += i;
}
return sum;
}
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,961
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,485
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,330
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,113
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,746
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,780