Java 线程问题在线等 急需求代码 50

第1部分使用joint()1、为MyMathsClass类编写一个实用方法,对于输入的两个数字(一小一大),要求求取区间内所有数字的和。2、求和的实现过程应当分为多个区间... 第1部分
使用joint()
1、为MyMathsClass类编写一个实用方法,对于输入的两个数字(一小一大),要求求取区间内所有数字的和。
2、求和的实现过程应当分为多个区间将由5个以上线程实现,例如对于输入的20和70:
线程1求20-30的和
线程2求31-40的和
线程3求41-50的和
线程4求51-60的和
线程4求61-70的和
提示:你将需要用到joint方法
第2部分
实现一个多线队列的示例程序,用于解释课堂中有关“栈”实例的讨论。
展开
 我来答
vortexchoo
2017-06-26 · TA获得超过543个赞
知道小有建树答主
回答量:501
采纳率:40%
帮助的人:86.5万
展开全部
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveTask;

public class ForkJoin extends RecursiveTask<Integer> {

/**
 * 
 */
private static final long serialVersionUID = -6162301641016381533L;

private Integer minNum;

private Integer maxNum;

private Integer numCountPerTask;

private boolean isStart;

public ForkJoin(Integer minNum, Integer maxNum, Integer numCountPerTask, boolean isStart) {
this.minNum = minNum;
this.maxNum = maxNum;
this.numCountPerTask = numCountPerTask;
this.isStart = isStart;
}

@Override
protected Integer compute() {
List<ForkJoinTask<Integer>> queue = new ArrayList<>();
Integer taskCount = (maxNum-minNum)/(numCountPerTask - 1);
if(taskCount == 0){
taskCount = (maxNum-minNum)%(numCountPerTask - 1) > 0 ? 1 : 0;
if(taskCount == 0){
return 0;
}
}
Integer sum = 0;

if(taskCount == 1){
for(int i = minNum; i <= maxNum; i++){
sum += i;
}
}else{
for(int i = 1; i <= taskCount; i++){
Integer paramMaxNum = 0;
if(i != taskCount){
paramMaxNum = minNum + numCountPerTask;
}else{
paramMaxNum = maxNum;
}
if(i == 1){
isStart = true;
}else{
isStart = false;
}
ForkJoin fj = new ForkJoin(isStart ? minNum : (minNum + 1), paramMaxNum, numCountPerTask, isStart);
ForkJoinTask<Integer> jft = fj.fork();
queue.add(jft);
minNum = minNum + numCountPerTask;
}
}
if(!queue.isEmpty()){
for(ForkJoinTask<Integer> fjt: queue){
sum += fjt.join();
}
}
return sum;
}

public static void main(String[] args) {
ForkJoin fj = new ForkJoin(20, 70, 10, true);
Integer res = fj.compute();
System.out.println(res);
}

}

第二题不是很明了 是要干嘛

追问
第一部分是一道题,第二部分是一道题(自由发挥的实现要求即可)。能给做做吗,可以提高悬赏。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式