如何使用Java实现多线程切换等待唤醒交替打印奇偶数
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关如何使用Java实现多线程切换等待唤醒交替打印奇偶数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。引言在日常工作生活中,可能会有用时几个人或是很多
千家信息网最后更新 2026年11月03日如何使用Java实现多线程切换等待唤醒交替打印奇偶数
这篇文章给大家分享的是有关如何使用Java实现多线程切换等待唤醒交替打印奇偶数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
引言
在日常工作生活中,可能会有用时几个人或是很多人干同一件事,在java编程中,同样也会出现类似的情况,多个线程干同样一个活儿,比如火车站买票系统不能多个人买一到的是同一张票,当某个窗口(线程)在卖某一张票的时候,别的窗口(线程)不允许再卖此张票了,在此过程中涉及到一个锁和资源等待的问题,如何合理正确的让线程与线程在干同一件事的过程中,不会抢资源以及一个一直等待一个一直干活的状况,接下来就聊一下多线程的等待唤醒以及切换的过程,在此就以A和B两个线程交替打印奇偶数的例子为例,代码如下:
package com.svse.thread;import java.util.concurrent.atomic.AtomicInteger;/** * 交替打印奇偶数*功能说明: *@author:zsq *create date:2019年5月27日 下午4:34:30 *修改人 修改时间 修改描述* *Copyright (c)2019北京智华天成科技有限公司-版权所有*/public class AlternatePrinting { //让两个线程使用同一把锁。交替执行 。 //判断是不是奇数 如果是奇数进入奇数线程执行打印并加一。然后线程释放锁资源。然后让该线程等待 //判断是不是偶数,如果是偶数进入偶数线程执行打印并加一。然后线程释放锁资源。然后让该线程等待 public static AtomicInteger atomicInteger =new AtomicInteger(1); public static void main(String[] args) { Thread a=new Thread(new AThread()); Thread b=new Thread(new BThread()); a.start(); b.start(); } //奇数线程 public static class AThread implements Runnable{ public void run() { while(true){ synchronized (atomicInteger) { if(atomicInteger.intValue()%2 !=0){ System.out.println("奇数线程:" + atomicInteger.intValue()); try { Thread.sleep(500); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } atomicInteger.getAndIncrement(); // 以原子方式将当前值加 1。 // 奇数线程释放锁资源 atomicInteger.notify();//执行完操作后释放锁并进入等待 try { atomicInteger.wait(); } catch (InterruptedException e) { e.printStackTrace(); } }else{ // 奇数线程等待 try { atomicInteger.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } } //偶数线程 public static class BThread implements Runnable{ public void run() { while(true){ synchronized (atomicInteger) { if(atomicInteger.intValue()%2 ==0){ System.out.println("偶数线程:"+ atomicInteger.intValue()); try { Thread.sleep(500); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } atomicInteger.getAndIncrement(); // 以原子方式将当前值加 1。 // 偶数线程释放锁资源 atomicInteger.notify();//执行完操作后释放锁并进入等待 try { atomicInteger.wait(); } catch (InterruptedException e) { e.printStackTrace(); } }else{ try { // 偶数线程等待 atomicInteger.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } }}感谢各位的阅读!关于"如何使用Java实现多线程切换等待唤醒交替打印奇偶数"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
线程
偶数
奇数
资源
奇偶
奇偶数
切换
过程
两个
内容
原子
多个
方式
更多
篇文章
加一
不错
实用
接下来
个人
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
什么是科技互联网
互联网和科技技术
鑫亿盛互联网科技
云电互联网科技
智慧科技互联网
深圳天众互联网科技公司
互联网科技论坛
互联网科技博客
互联网金融监管科技
昭通互联网科技选哪家
知域互联网科技有限公司大骗子
移动互联网年度科技创新
互联网媒体平台算高科技产业
长沙茂晟互联网科技有限公司
用友工业互联网科技发展
互联网第三次科技革命特征
吉林省码上互联网科技电话
长沙渺峰互联网科技有限公司
恒生科技指数 中概互联网
新华互联网科技
互联网科技金融
北京互联网科技
上海互联网科技有限公司
互联网 新科技
华服互联网科技官网
黑科技闪耀互联网之光
雨阳互联网卡科技有限公司
郑州欣桑互联网科技有限公司
互联网科技手机排行榜