多线程实现加法(三种创建线程的方式)

本文介绍了利用多线程进行加法运算的三种方法,包括继承Thread类、实现Runnable接口以及实现Callable接口,并讨论了如何处理线程结果。此外,还详细讲解了CountDownLatch的使用,它作为一个计数器,用于控制线程的同步执行。
摘要由CSDN通过智能技术生成

三种创建线程的方法

利用多线程去计算加法,主要有三步

  • 分解任务为子任务
  • 新建线程执行子任务(如何得到结果或保存结果)
  • 得到子任务的结果,合并得到最终结果

创建线程主要有三种方法,前两种没有返回值,callable接口有返回值。

继承Thread类(没有返回值)

//继承thread类,需要重写run方法
public class SumThread extends Thread {
   
    private long start;
    private long end;
    private int num;
    private long[] result;
    //这个是为了判断所有线程是否全部执行完,因为继承thread类的线程没有返回值
    private CountDownLatch cdl;

    public SumThread(long start, long end, int num, long[] result, CountDownLatch cdl) {
   
        this.start = start;
        this.end = end;
        this.num = num;
        this.result = result;
        this.cdl = cdl;
    }
    //需要重写run方法
    @Override
    public void run() {
   
        long sum = 0;
        for (long i=start;i<end;i++){
   
            sum += i;
        }
        result[num] = sum;
        //计数器减一
        cdl.countDown();
    }
}
public class SumParallelThread {
   
    public static void main(String[] args) throws InterruptedException{
   
        int N = 90000000;
        int numThread = 3;
        parallel(N, numThread);
    }
    public static void parallel(int N, int numThread) throws InterruptedException{
   
        //通过一个数组来记录各个子线程的计算结果
        long[] result = new long[numThread];
        //CountDownLatch可以看作计数器
        CountDownLatch cdl =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值