【多线程】双线程交替打印1至100

本文探讨了如何使用Java的内置锁和显式锁实现双线程交替打印1到100的数字。分别介绍了synchronized关键字以及Object类的wait/notify方法,以及Lock接口和Condition对象的await/signal/signalAll方法,详细阐述了同步和协作机制。

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

一、内置锁

  • 同步:synchronized
  • 协作:Object # wait/notify/notifyAll
public class PrintNumber {

    /**
     * 打印锁,同一时刻仅有一个任务可以持有此锁
     */
    private static Object lock = new Object();

    /**
     * 计数器
     */
    private static int counter = 1;

    /**
     * 计数器最大值
     */
    private static final int MAX_COUNTER = 100;

    public static void main(String args[]) {
        // 奇数打印线程
        Thread oddThread = new Thread() {
            @Override
            public void run() {
                // 请求打印锁
                synchronized (lock) {
                    while (counter <= MAX_COUNTER) {
                        // counter为奇数,打印counter并唤醒偶数打印线程
                        if (counter % 2 != 0) {
                            System.out.println("Thread1 : " + counter);
                            counter = counter + 1;
                            lock.notifyAll();
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值