编写4个线程,第一个线程从1加到25,第二个线程从26加到50,第三个线程从51加到75,第四个线程从76加到100,最后再把四个线程计算的结果相加。
class Text1 extends Thread{
private int sum;
public void run()
{
for(int i=1;i<=25;i++)
{
sum+=i;
}
}
public int getNumber()
{
return sum;
}
}
class Text2 extends Thread{
private int sum;
public void run()
{
for(int i=26;i<=50;i++)
{
sum+=i;
}
}
public int getNumber()
{
return sum;
}
}
class Text3 extends Thread{
private int sum;
public void run()
{
for(int i=51;i<=75;i++)
{
sum+=i;
}
}
public int getNumber()
{
return sum;
}
}
class Text4 extends Thread{
private int sum;
public void run()
{
for(int i=76;i<=100;i++)
{
sum+=i;
}
}
public int getNumber()
{
return sum;
}
}
public class Main{
public static void main(String[] args)
{
Text1 a=new Text1();
Text2 b=new Text2();
Text3 c=new Text3();
Text4 d=new Text4();
a.start();
b.start();
c.start();
d.start();
//休眠,四个线程运行完休眠再运行主线程;sleep是静态方法,最好用Thread.sleep();
try{
Thread.sleep(1000);
}catch(InterruptedException e1)
{}
System.out.println(a.getNumber()+b.getNumber()+c.getNumber()+d.getNumber());
}
}
class Count extends Thread{
int start;
Count(int start) {
this.start = start;
}
@Override
public synchronized void run() {
for (int i = start; i < start + 25; i++) {
Main.sum += i;
}
}
}
public class Main{
public static int sum = 0;
public static void main(String[] args) {
Count count1 = new Count(1);
Count count2 = new Count(26);
Count count3 = new Count(51);
Count count4 = new Count(76);
//用join();不用休眠
try{
count1.start();
count1.join();
count2.start();
count2.join();
count3.start();
count3.join();
count4.start();
count4.join();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
System.out.println(sum);
}
}