如何使用Java实现多线程切换等待唤醒交替打印奇偶数
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章给大家分享的是有关如何使用Java实现多线程切换等待唤醒交替打印奇偶数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。引言在日常工作生活中,可能会有用时几个人或是很多
千家信息网最后更新 2025年11月10日如何使用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安全错误
数据库的锁怎样保障安全
公益科技互联网素材
r语言获取数据库数据
自考 数据库
晋宁区综合软件开发市场报价
武汉天马软件开发
access 数据库访问
卫生网络安全领导机构
中石油北京软件开发公司
显示数据库的创建语句
群辉做代理服务器
云南服务器安全吗
软件开发遵循的技术原则
唐山app软件开发公司
刘东网络安全
江西南昌电信ip服务器云主机
计算机软件网络安全证书
数据库两个时间相减的秒数
网络安全5分钟演讲
复古传奇怎么加入服务器
菁安互联网科技
济南智造互联网科技有限公司
需要指向许可证服务器
青海网络技术开发报价
聊天室数据库
敏捷软件开发进度管理
计算机网络安全职业环境
罗湖区网络技术转移联系方式
网络安全宣传广告片
2020年网络安全事件处理
软件开发项目技术方法路线