两条线程分别打印奇偶数

Win10家庭版中文用户名改英文全攻略:从注册表到环境变量一步不落 本文详细介绍了Windows 10家庭版中文用户名改为英文的完整流程,包括注册表编辑、环境变量调整等关键步骤。通过激活管理员账户、重命名用户文件夹、修改注册表键值等操作,彻底解决因中文路径导致的软件兼容性问题,并提供常见错误解决方案和系统维护建议。 阅读详情

两条线程分别打印奇偶数

Object的线程通信方式

以来Object对象提供的wait和notify,使多条线程在等到和唤醒之间切换,要注意下边界wait的边界条件,否则可能导致现在永远处于wait中而不结束

  //不一定需要volatile,因为已经sync保证了可见性
    public static int num = 0;
    private static Object lock = new Object();
    private static CountDownLatch countDownLatch = new CountDownLatch(2);

    public static void main(String[] args) throws InterruptedException {


        Thread ji = new Thread(new Runnable() {
            public void run() {
                while (num <= 100) {
                    synchronized (lock) {
                    	//这里的num还要在判断下,否则可能打出101
                        if (num % 2 != 0 && num <= 100) {
                            System.out.println("奇数打印:" + num);
                            num++;
                            lock.notifyAll();
                        } else {
                            try {
                                //这里要加条件进入wait,否则线程无法结束
                                if (num < 100) {
                                    lock.wait();
                                }
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }

                        }

                    }
                }
                countDownLatch.countDown();
            }
        });
        Thread ou = new Thread(new Runnable() {
            public void run() {
                while (num <= 100) {
                    synchronized (lock) {
                        if (num % 2 == 0) {
                            System.out.println("偶数打印:" + num);
                            num++;
                            lock.notifyAll();

                        } else {

                            try {
                                if (num < 100) {
                                    lock.wait();
                                }
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }

                        }
                    }

                }
                countDownLatch.countDown();
            }


        });
        ji.setName("jishu");
        ou.setName("oushu");
        ji.start();
        ou.start();
        countDownLatch.await();
    }

AtomicInteger方式

这种方式其实是将锁放在了aotmic中去进行了,实现方式简单明了,不需要多线程之间的状态转换,推荐使用

 
private static AtomicInteger num = new AtomicInteger(0);
    private static CountDownLatch countDownLatch = new CountDownLatch(2);

    public static void main(String[] args) throws InterruptedException {


        Thread ji = new Thread(new Runnable() {
            public void run() {
                while (num.intValue() < 100) {
                    if (num.intValue() % 2 != 0 ) {
                        System.out.println("奇数打印:" + num);
                        num.incrementAndGet();
                    }
                }
                countDownLatch.countDown();

            }

        });
        Thread ou = new Thread(new Runnable() {
            public void run() {
                while (num.intValue() <= 100) {
                    if (num.intValue() % 2 == 0) {
                        System.out.println("偶数打印:" + num);
                        num.incrementAndGet();

                    }
                }
                countDownLatch.countDown();
            }

        });
        ji.setName("jishu");
        ou.setName("oushu");
        ji.start();
        ou.start();
        countDownLatch.await();
    }
大学计算 - 方程求解 实训答案 第3关 【代码】大学计算 - 方程求解 实训答案 第3关。 阅读详情

相关推荐

vivado Block Design 设计 .tcl 文件使用,导出,修改,添加方式

在vivado中生成 Block Design可以导出tcl文件进行保存(体积小),或者在别的版本vivado中打开(版本互通),这是一个非常好的功能。另外GitHub中很多项目都是采用这种方式上传的,学会如何使用可以快速修改历程项目。

2203_75345038的博客 2494

使用两个线程分别输出100以内的奇数和偶数,并按从小到大的顺序输出

不啰嗦,直接上干货! 我用的是线程通讯wait(等待)和notify(唤醒)步骤如下: 首先定义一个公共类: package demo10; public class ShareData { public int i; public int max; public boolean isEven=false; public ShareData(int i,int m...

我是“哈哈” 4846

使用基于python的neurora进行表征相似性分析(RSA)

发现了一款用于表征分析的Python API,还是挺方便的,这里简单介绍一下进行表征相似性分析的使用方法。

zjh12312311的博客 2765

多线程-两个线程交替打印奇数偶数

开启两个线程,交替打印奇数和偶数

ZKP_优快云的博客 974

Sigrity IBIS建模实战:如何用T2B工具快速转换SPICE模型(附避坑指南)

本文详细介绍了如何使用Sigrity T2B工具将SPICE模型高效转换为IBIS模型,涵盖从环境配置、模型预处理到转换流程和验证策略的全过程。通过实战案例和避坑指南,帮助硬件工程师掌握高速电路设计中的IBIS建模技术,提升信号完整性分析效率。

weixin_29243279的博客 395

Windows下PaddleOCR GPU版环境搭建全攻略(含CUDA 11.7避坑指南)

本文提供了一份详尽的Windows平台PaddleOCR GPU版环境搭建指南,重点涵盖CUDA 11.7与cuDNN的版本匹配、环境变量配置及常见避坑方法。通过使用Conda创建虚拟环境并安装匹配的PaddlePaddle-gpu版本,最终实现GPU加速的OCR推理,帮助开发者构建稳定高效的开发环境。

docker7nomad的博客 751

【LeetCode-多线程】1116. 打印零与奇偶数

目录一、题目二、解决1、Semaphore2、CountDownLatch3、Thread.yield()4、LockSupport5、Thread.yield()6、ReentrantLock+Condition三、参考 一、题目 现有函数 printNumber 可以用一个整数参数调用,并输出该整数到控制台。 例如,调用 printNumber(7) 将会输出 7 到控制台。 给你类 ZeroEvenOdd 的一个实例,该类中有三个函数:zero、even 和 odd 。ZeroEvenOdd 的相同实

HeavenDan的博客 994

深入解析摄像头硬件接口:DVP、MIPI-CSI2与USB的技术对比与应用场景

本文深入解析了摄像头三大主流硬件接口DVP、MIPI-CSI2与USB的核心技术差异。DVP接口作为并行传输的“老兵”,成本低但带宽和抗干扰能力有限;MIPI-CSI2凭借差分串行设计成为移动高清设备的首选,具备高带宽和强抗干扰性;USB接口则依托UVC标准实现了跨平台的即插即用。文章通过对比传输方式、带宽、应用场景等关键维度,为智能硬件、嵌入式系统等领域的工程师提供了清晰的选择指南。

c7d8e的博客 515

多线程打印奇偶数

package ThreadTest.ABC; public class ThreadPrintOddAndEven implements Runnable{ private String name; private static volatile int count = 0; private Object lock;//用于实现同步 private ThreadPrintOddAndEven(String name,Object lock){ this.

weixin_44718747的博客 896

矢量网络分析仪校准:原理、方法与系统适配性

矢量网络分析仪(VNA)校准是射频测量的关键环节,通过误差建模(12项误差项)和标准件测量,可将系统不确定度从±5dB降至±0.1dB以下。主流校准方法包括SOLT(适用于同轴系统)和TRL(适用于波导系统),二者在标准件、误差重点及频率上限等方面存在显著差异。随着6G与量子通信的发展,动态实时校准将成为新趋势。工程师需根据传输结构、频率范围及精度需求选择合适方法,确保测量精度。

u014344410的博客 262

69页完整版智慧港口综合解决方案

智慧港口需求4港机远程操控等自动化改造需求自动化码头AGV无线通信及专用视频系统需求安全生产视频监控类需求港机RCMS及设备管理需求岸边智能理货码头三维全景应用智慧港口解决方案5自动化码头AGV/跨运车/无人集卡无线接入港机远控视觉及冗余无线通信视觉集卡防吊起系统集装箱码头岸边智能理货港机RCMS系统无线接入港机智能化管理(无线高清视频监控、一键报警、远程抄表系统)港口拖轮无线接入岸边溢油监测系统TD-LTE覆盖及业务终端接入港口生产管理系统港口可视化集群调度港口GiNMS综合网络设备智能管理全球作业效率最

zuoan1993的博客 2129

【Java多线程】交替打印奇偶数

使用 ReentrantLock 结合 Condition 实现奇数偶数的交替打印

Nonoas的博客 2228

c#【保姆级教程】基于System.Text.Json 支持多态类型序列化! 手把手教你实现一个通用的 PolymorphicJsonConverter!

我们需要自己实现一个继承自的转换器,在序列化时记录具体类型,在反序列化时根据类型标识还原成正确的子类对象。public abstract class WorkStepBase { /* 抽象方法等 */ }public class Person : WorkStepBase { /* 实现 */ }public class Product : WorkStepBase { /* 实现 */ }特性说明✅ 自动发现子类无需手动维护类型列表,自动扫描程序集✅ 类名映射。

一个编程的同学 425

实现两条线程交替打印奇偶数的两种简单方法

实现两条线程交替打印奇偶数的两种简单方法 使用Synchronized public class Main { private int count = 0; public static void main(String[] args) throws InterruptedException { Main main = new Main(); n...

dwwzone 139

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

两条线程交替打印数字

public class Solution1 { private static Object lock = new Object(); private static int i = 1; public static void main(String[] args) { Thread thread1 = new Thread() { public void run() { while (i <= 10) { synchronized (lock) {

Blog of Jatsby 270

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

两线程实现奇偶交替打印

两种方式实现: 1 通过wait()/notifyall()方法实现 /* 两条线程实现交替打印奇偶数 */ public class ThreadExchange { private static Object lock = new Object(); private static int i = 1; public static void main(Str...

逆流而上Mr李 647

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java两个线程轮换打印1-100内的奇数和偶数

问题:   两个线程,一个打印1-100的奇数,一个打印1-100的偶数;要求:线程1打印5个之后,线程2开始打印,线程2打印5个之后,线程1再开始打印,以此循环。  public class Test { //state==1表示线程1开始打印,state==2表示线程2开始打印 private static int state = 1; private static in

JasonZhang 1万+

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

两个线程交替打印0~100的奇偶数: 偶线程:0 奇线程:1 偶线程:2 奇线程:3 ...... public class Test { public static void main(String[] args) { // 创建两条线程,奇数线程打印奇数,偶数线程打印偶数 Thread thread1 = new Thread(new ThreadTask(), "偶数线...

WentingLeng的博客 387

java两种方式实现线程求奇数-偶数

packagecom.ljl.org.test4; /** *@DEMO:Interview *@Author:jilongliang *@Date:2013-4-17 * *分别使用Runnable接口和Thread类编程实编写一应用程序创建两个线程一个线程打印输出1—100...

chengxi6093的博客 769

【Java】设计模式之顺序控制

如果有多个线程进行顺序打印,使用ReentrantLock的条件变量、await、sigal会能比synchronized获得更好的性能,因为synchronized每次都唤醒所有的线程。比如说有n个线程,让n个线程循环依次打印n个数字,这时候可以让ReentrantLock创建n个条件变量,每个线程对应一个条件变量。所以,想要按顺序执行,一开始让所有线程都停下来,接下来手动触发一个线程运行,并让这个线程只运行一次就结束或阻塞,并触发下一个线程运行,以此类推就能按顺序进行线程的执行。

第三季度的博客 704

Java多线程安全

可以使用自定义的。

m0_73837751的博客 808

Java 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数(方法一)

public class DigitPrinterExample { public static void main(String[] args) { Number num = new Number(); OddPriter oddPriter = new OddPriter(num); EvenPrinter evenPrinter = new

何大江的博客 7025

Java多线程交替打印

Java多线程打印数字

weixin_45186425的博客 580

Java多线程交替打印奇偶数

Java多线程交替打印奇偶数的两种方法

weixin_48469176的博客 639

两个线程交替打印奇偶数

问题描述 设计两个线程,打印1-10,一个线程打印奇数,另一个线程打印偶数,要求交替打印。 最后输出123……10 方法一(Synchronized+共享变量) 1.解题思路 新建一个对象,并定义一个共享变量。只要flag不为1,线程t2就会阻塞,释放锁资源,所以t1线程先执行,此时flag为0,跳过while判断,然后修改flag为1,打印奇数,并唤醒t2,由于flag被改为1,下次循环,t1就会阻塞。t2被唤醒后,t1已经释放了锁资源,所以t2可以获取锁资源,并且flag为1,跳过while循环,修

qq_43568109的博客 3768

【C++】多线程交替打印奇偶数

多线程交替奇偶打印

weixin_71138261的博客 1139
上一篇: mongo索引对排序sort的规则
下一篇: Apache RocketMQ官网翻译(一)
@云师兄
博客等级 码龄10年 10粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值