Java利用多线程计算

开n个进程
每个进程计算一部分,然后再合并

有些人可能会说 sleep(10) 不是很耗费时间吗?
其实不会
一般的运算其实根本用不着多线程
只有庞大的计算量才需要多线程
然而这时sleep(10)并不会显得很浪费
恰恰相反,这样做不会因为循环而浪费过多的资源

import java.util.Scanner;
import java.lang.Thread;
import java.util.Vector;
import java.io.*;
class add extends Thread{
	static int sum=0;
	static int flag=0;
	int start,end;
	add(int a,int b){
		start=a;
		end=b;
	}
	public void run() {
		for(int i=start;i<=end;i++) {
			sum+=i;
		}
		flag++;
	}
}

public class example2 extends Thread{
	public static void main(String[] args) {
		add a=new add(1,10);
		add b=new add(11,20);
		add c=new add(21,30);
		add d=new add(31,40);
		add e=new add(41,50);
		add f=new add(51,60);
		add g=new add(61,70);
		add h=new add(71,80);
		add i=new add(81,90);
		add j=new add(91,100);
		a.start();
		b.start();
		c.start();
		d.start();
		e.start();
		f.start();
		g.start();
		h.start();
		i.start();
		j.start();
		synchronized(a) {
			while(true) {
				if(a.flag==10) {
					System.out.println(a.sum);
					return;
				}
				try {
					sleep(10);
				} catch (InterruptedException e1) {
					e1.printStackTrace();
				}
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值