Java练习题(四)

这篇博客介绍了如何在Java中实现两个线程协同工作,一个线程按顺序打印数字1到52,另一个线程交替打印字母A到Z,最终输出混合的序列。内容涵盖了多线程同步与通信的关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现两个线程,一个线程打印1-52,另一个线程打印A-Z,要求输出的结果:

  1 2 A 3 4 B 5 6 C 7 8 D 9 10 1112 ...  52 E F G H I J K ...  X Y Z

package cn.edu.zzti.thread;

/**
 * @author 
 * @version 
 * @date 
 * 打印1-52
 */
public class Thread52 extends Thread {
	
	private Object object;
	
	public Thread52(Object object){
		this.object = object;
	}
	
	@Override
	public void run(){
		synchronized (object) {
			for(int i = 1;i <= 52;i++){
				System.out.print(i+" ");
				if(i <= 8 && i%2 == 0){//如果i小于等于8切是偶数
					object.notifyAll();//唤醒其他线程
					try {
						object.wait();//进入等待
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				if(i == 52){//如果i等于52,唤醒其他进程
					object.notifyAll();
				}
			}
		}
	}

}

package cn.edu.zzti.thread;

/**
 * @author 
 * @version 
 * @date 
 * 打印A-Z,
 */
public class ThreadAZ extends Thread {
	
	private Object object;
	
	public ThreadAZ(Object object){
		this.object = object;
	}
	
	@Override
	public void run(){
		synchronized (object) {
			for(char i= 'A';i <= 'Z';i++){//输出A~Z
				System.out.print(i+" ");
				object.notifyAll();//唤醒其他进程
				try {
					if(i <= 'D'){//如果i小于'D',进入等待
						object.wait();
					}
				} catch (InterruptedException e) {
					// TODO: handle exception
					e.printStackTrace();
				}
			}
		}
	}

}

package cn.edu.zzti.thread;

/**
 * @author 
 * @version 
 * @date 
 * 实现两个线程,一个线程打印1-52,另一个线程打印A-Z,要求输出的结果:
 * 1 2 A 3 4 B 5 6 C 7 8 D 9 10 11 12 ...  52 E F G H I J K ...  X Y Z
 */
public class TestTwo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Object object = new Object();
		//实例1~52
		Thread thread52 = new Thread52(object);
		
		//实例A-Z线程,继承Thread
		Thread threadAZ = new ThreadAZ(object);
		
		thread52.start();//启动线程
		threadAZ.start();//启动线程
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值