7-148 试试多线程 (10 分)

该博客探讨了Java中多线程的使用,通过创建4个线程分别计算1-25、26-50、51-75和76-100的累加和。原始代码中由于没有正确同步线程,导致结果可能不唯一。作者引入了`join()`方法来确保每个线程完成其计算后再进行下一个线程的累加,从而保证了结果的准确性。
摘要由CSDN通过智能技术生成

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;
	 }
 }





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值