Java-线程课后作业练习题1

创建3个线程Thread1、Thread2、Thread3,要求三个线程依次对一个数字进行递减操作,当数字减到0时结束。

package Ch04HomeWork;

public class DecreasingTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DecreasingThread s = new DecreasingThread();
		Thread t1 = new Thread(s);
		Thread t2 = new Thread(s); 
		Thread t3 = new Thread(s);
		t1.start();
		t2.start();
		t3.start();
	}

}

class DecreasingThread implements Runnable{
	private int number = 100;
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true){
			synchronized (this) {
				if(number>0){
					System.out.println(Thread.currentThread().getName() + "  is Decreasing  " + number--);
				}else break;
			}
		}
	}
	
}

这段代码展示了一个使用多线程的案例,其中有三个线程共同降低一个初始值为 100 的变量,并通过同步机制来确保线程安全。

  1. DecreasingTest 类中的 main 方法创建了一个 DecreasingThread 实例 s

  2. 创建了三个线程 t1t2t3,它们都共享同一个 s 实例。

  3. 启动这三个线程,它们会同时运行 run 方法。

  4. DecreasingThread 类中,run 方法实现了多线程任务。

  5. 使用一个无限循环,线程会不断尝试降低 number 的值。

  6. 使用 synchronized (this) 块来确保线程安全。这意味着在同一时间只有一个线程可以进入这个块,避免了多个线程同时操作 number 导致的问题。

  7. synchronized 块内,首先检查 number 是否大于 0,如果是,则输出当前线程名和 number 值,然后 number 减一。如果 number 小于等于 0,则退出循环。

总体来说,这段代码展示了如何使用多线程和同步机制来共享一个变量,并确保多个线程对该变量的操作是安全的。每个线程通过同步块来控制对 number 的访问,以避免竞争条件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Ale-阿乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值