7-148 试试多线程 (10 分)
编写4个线程,第一个线程从1加到25,第二个线程从26加到50,第三个线程从51加到75,第四个线程从76加到100,最后再把四个线程计算的结果相加。
输入格式:
无
输出格式:
最终结果
输入样例:
结尾无空行
输出样例:
5050
结尾无空行
注意:下边第一个是实例(错的),第二个才是正确的
!
!
!
如果我们是按照这样写的话:(可以自己去试试),你会发现你的答案不唯一。
为什么呢?因为这些进程和主进程是一块进行的(你可以这样理解),那么我们的目的是先让这些进程运行完然后再进行主进程的sum相加,那么我们就得用到Thread中的join()方法了
在这里插入代码片
```import java.util.*;
public class Main{
public static void main(String args[]) throws InterruptedException {
int sum=0;
t1 tt1=new t1();
t2 tt2=new t2();
t3 tt3=new t3();
t4 tt4=new t4();
tt1.start();
tt2.start();
tt3.start();
tt4.start();
sum+=tt1.getsum();
sum+=tt2.getsum();
sum+=tt3.getsum();
sum+=tt4.getsum();
System.out.println(sum);
}
}
class t1 extends Thread
{ int sum;
public void run()
{
for(int i=1;i<=25;i++)
{
sum+=i;
}
}
public int getsum()
{
return this.sum;
}
}
class t2 extends Thread
{ int sum;
public void run()
{
for(int i=26;i<=50;i++)
{
sum+=i;
}
}
public int getsum()
{
return this.sum;
}
}
class t3 extends Thread
{ int sum;
public void run()
{
for(int i=51;i<=75;i++)
{
sum+=i;
}
}
public int getsum()
{
return this.sum;
}
}
class t4 extends Thread
{ int sum;
public void run()
{
for(int i=76;i<=100;i++)
{
sum+=i;
}
}
public int getsum()
{
return this.sum;
}
}
下边是使用了join的。至于join具体是什么,你就把他看做是一个插队的vip客户就行了,只有他完成了后边的才可以进行。
在这里插入代码片
```import java.util.*;
public class Main{
public static void main(String args[]) throws InterruptedException {
int sum=0;
t1 tt1=new t1();
t2 tt2=new t2();
t3 tt3=new t3();
t4 tt4=new t4();
tt1.start();
tt1.join();
sum+=tt1.getsum();
tt2.start();
tt2.join();
sum+=tt2.getsum();
tt3.start();
tt3.join();
sum+=tt3.getsum();
tt4.start();
tt4.join();
sum+=tt4.getsum();
System.out.println(sum);
}
}
class t1 extends Thread
{ int sum;
public void run()
{
for(int i=1;i<=25;i++)
{
sum+=i;
}
}
public int getsum()
{
return this.sum;
}
}
class t2 extends Thread
{ int sum;
public void run()
{
for(int i=26;i<=50;i++)
{
sum+=i;
}
}
public int getsum()
{
return this.sum;
}
}
class t3 extends Thread
{ int sum;
public void run()
{
for(int i=51;i<=75;i++)
{
sum+=i;
}
}
public int getsum()
{
return this.sum;
}
}
class t4 extends Thread
{ int sum;
public void run()
{
for(int i=76;i<=100;i++)
{
sum+=i;
}
}
public int getsum()
{
return this.sum;
}
}