多线程-让线程执行变得可控

本文介绍了如何通过多线程实现线程间的交替执行,例如两个线程交替打印0~100的奇偶数,并详细解释了使用notifyAll()、notify()和wait()方法在synchronized块中协调线程,确保正确线程的执行顺序,同时展示了如何实现N个线程顺序循环打印数字的场景。
摘要由CSDN通过智能技术生成

两个线程交替打印0~100的奇偶数:
偶线程:0
奇线程:1
偶线程:2
奇线程:3
......

public class Test {
	
	public static void main(String[] args) {
		// 创建两条线程,奇数线程打印奇数,偶数线程打印偶数
		Thread thread1 = new Thread(new ThreadTask(), "偶数线程");
		Thread thread2 = new Thread(new ThreadTask(), "奇数线程");
		thread1.start();
		thread2.start();
	}
	
	static class ThreadTask implements Runnable {
		// 静态变量:创建对象时不会重置值
		static int value = 0;
		
		@Override
		public void run() {
			while(value < 100){
				// ThreadTask.class加锁后,在释放锁之前不能被其它线程使用;
				synchronized (ThreadTask.class) {
					System.out.println(Thread.currentThread().getName() + ":" + value ++);
					//先唤醒,再让出锁
					ThreadTask.class.notify();
					try {
						//在执行wait()方法后会释放锁,进入等待状态。
						ThreadTask.class.wait();
					} cat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值