java让2个线程交替执行,每个线程执行1秒

使用两个线程打印 1-100。线程1, 线程2 交替打印 两线程交替打印1-100问题描述代码实现运行结果总结 问题描述 使用两个线程打印 1-100。线程1, 线程2 交替打印 代码实现 class Num implements Runnable{ private int num=1; @Override public void run() { while(true){ synchronized(this){ notify(); if( 阅读详情

java让2个线程交替执行,每个线程执行1秒:

package tf56.SpringBoot.Annotation;

/**
 * Created by Administrator on 2017/10/17.
 */
public class Test2 {
    private static  int state = 1;

    public static void main(String[] args) {
        final Test2 t=new Test2();
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    synchronized (t) {
                        if (state != 1) {
                            try {
                                t.wait();
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                        try {
                            System.out.println("轮到线程一开始执行");
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        //线程1执行一秒
                        state=2;
                        t.notifyAll();
                    }
                }
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    synchronized (t) {
                        if (state != 2) {
                            try {
                                t.wait();
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                        try {
                            System.out.println("轮到线程二开始执行");
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        //线程1执行一秒
                        state=1;
                        t.notifyAll();
                    }
                }
            }
        }).start();
    }
}
打印100以内的所有数据,线程1打印奇数,打印5个数切换到线程2,线程2打印偶数,打印5个然后切换到线程1

package tf56.SpringBoot.Annotation;

/**
 * Created by Administrator on 2017/10/17.
 */
public class Test1 {
    private static  int state = 1;
    private static int num1 =1;
    private static int num2 =2;

    public static void main(String[] args) {
        //声明一个需要加锁的对象
        final  Test1 t = new Test1();
        //打印奇数的线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (num1 < 100) {
                    synchronized (t) {
                        if (state != 1) {
                            try {
                                t.wait();
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                        for (int i=0; i < 5; i++) {
                            System.out.println(num1 + ".....");
                            num1+=2;
                        }
                        state = 2;
                        t.notifyAll();
                    }
                }
            }
        }).start();

        //打印偶数的线程
      new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (t){
                    while (num2<100){
                        if(state !=2){
                            try {
                                t.wait();
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                        //打印偶数
                        for(int i = 0;i<5;i++){
                            System.out.println(num2+".....");
                            num2+=2;
                        }
                        state =1;
                        t.notifyAll();
                    }
                }
            }
        }).start();

    }
}



Java 多个线程交替执行 Java 多个线程交替执行 - 小白入门教程 阅读详情

相关推荐

软件测试 | 手把手教你如何使用 Charles 抓包工具(电脑+手机端)

软件测试 | 手把手教你如何使用 Charles 抓包工具(电脑+手机端)一、Charles简介二、Charles下载与安装三、Charles配置(1)Charles-PC端的配置如下:(2)过滤网络请求:(3)Charles抓取HTTPS请求包前置条件:(4)Charles抓取HTTPS双向认证包:关注我,免费领取学习资料 嘿。大家好,我是4U: 做过 APP 测试的同学都会接触抓包工具,通过抓包工具可以获取到客户端与服务端接口的交互数据,在实际测试APP的过程中,我们往往会发现服务端返回 的参数字段错

leboxy的博客 4153

java线程

java线程基础知识

朱颜辞镜花辞树 1387

ICC2 实战秘籍:create_workspace 命令全解析

必选项:工作区名称,这可是创建工作区的 “身份证”,必不可少。技术数据选项匹配:优先考虑用 -technology 直接加载技术文件,这是获取最新、最准确技术数据的首选路径;要是已经有合适的技术库了,那 -use_technology_lib 引用现有技术库也能快速上手。精度设置优先规则:技术文件自动配置排在第一位,能自动适配就别手动操心;要是自动配置不理想,那就显式指定 scale_factor;实在没要求,就用默认配置,但得清楚它的精度限制。

weixin_50820814的博客 1123

Hello ~ Mr.多线程,听说你很快?

灵魂拷问:多线程一定快吗? 有些编程基础的朋友们都知道,我们使用多线程的目的就是为了加快程序的处理速度,但是我想重新问一下用了多线程程序就一定快吗? 为了讨论这个问题需要首先分析一下多线程能够提速的核心因素是什么? 多线程能够充分利用计算机的硬件资源,现在的CPU都是多核心,使用多线程能够充分发挥CPU的性能从而提高程序的运行速度,这样的解释还不够深入。在笔者看来多线程速度快的核心因素就一句话: 把串行执行顺序变为并行执行 串行与并行 以爬虫为例,下图为单线程爬虫的执行顺序,看箭头的指向,它们首尾衔接依次执

crxk_的博客 1156

别再死记硬背参数了!手把手教你用Fluent欧拉模型搞定流化床模拟(附颗粒粘度/体积分数设置详解)

本文深入解析Fluent欧拉模型在流化床模拟中的应用,重点讲解颗粒粘度和体积分数等关键参数的设置原理与科学方法。通过对比不同模型(如Syamlal-O'Brien、Gidaspow)的适用场景,帮助工程师摆脱参数死记硬背,实现精准模拟。内容涵盖相间作用机制、求解策略优化及结果验证,为化工、能源领域的流化床模拟提供实用指南。

weixin_42656416的博客 429

无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架

Solon 是新一代,Java 企业级应用开发框架。是杭州无耳科技有限公司的“根级”开源项目(最近“杭州六小龙”很火啊,我们也是杭州的哦)。从零开始构建(No Spring、No Java-EE、No Servlet),有灵活的接口规范与开放生态。采用对商用友好的 Apache 2.0 开源协议。

向往自由的少年!(我是一个少年!!!) 1693

java线程实现一秒_用java编程实现两个定时线程,一个线程每隔1秒显示一次,另一个线程每隔3秒显示一次...

满意答案广新慈_5612013.12.31采纳率:45%等级:12已帮助:7531人package com;class Ceshi{public static void main(String[] args){OneSecond oneThread=new OneSecond();TwoSecond twoThread=new TwoSecond()...

weixin_39608118的博客 2226

机械工程师如何用Codex实现CAD自动化:从重复劳动到智能设计

在机械设计领域,CAD二次开发长期面临学习门槛高、维护成本大的难题。随着AI编程助手如Codex的出现,通过自然语言生成可执行代码,工程师无需精通编程即可实现图纸批量处理、BOM表自动生成、参数化建模等任务。这种技术将重复性操作自动化,显著提升设计效率,让工程师聚焦于核心创新。应用场景涵盖批量修改图纸属性、跨软件数据流转、自动打印等。本文分享机械工程师利用Codex落地自动化的实战经验与避坑指南。

weixin_32296621的博客 357

08-多种创建线程的方式案例演示(二)使用线程池

本节讲创建线程的第五种方式:定时器。 定时器其实也是相当于开辟一个线程来进行执行定时任务,就是我们所熟悉的Timer类,我们来看一下它的用法,其实定时器还是非常有用的,比如说我们想在某一个时间点上执行一件事,比如说,我们凌晨要跑数据,比如说,我们要实现20分钟之后提示我们一些事等等,都可以通过定时器来执行。定时器,关于定时任务,除了JDK所给我们提供的Timer类这个API以外,还有很多的第三方...

G_66_hero的博客 552

MacTeX+TeXstudio:Macbook配置本地Latex看这一篇就够了

这个博客记录本人在MacBook上配置本地Latex的流程,其中选择的编译环境为MacTeX,编辑器为TeXstudio。采用的原因主要两点:一个是本人配置的原因主要是用来撰写毕业论文,希望能够尽可能简化设置流程,专注内容表达;第二是由于本人还有一个windows系统的笔记本,想要编辑器在专注写作体验的同时在两个系统上能够都适配,从而减少切换效率,故选择此组合。这篇文章介绍并详细记录了本人的安装流程,有相同需求的同志也可借鉴。

Katherine-XY的博客 6981

GEE 案例分析:利用Landsat数据进行FAI、NDVI及CHLA分析并统计平均值(巢湖为例)

浮游藻类指数(FAI)、归一化植被指数(NDVI)及叶绿素a(CHLA)是水体环境监测的重要指标。本文利用Google Earth Engine(GEE)平台,基于Landsat 5和Landsat 8数据,进行水体藻类及植被监测。

此星光明博客 1336

JAVA多线程

今天做点JAVA多线程的练习题来巩固一下多线程的相关知识,话不多说,直接上题。 Thread类中的start()方法与run()方法的区别 答:线程对象调用run()方法不开启线程,仅仅是对run()方法的调用。而start()方法会开启线程,并且让jvm调用run()方法在线程中执行。 在做这道题的时候,我发现了一个比较有趣的事情,下面两段代码的运行结果居然不是一样的,惊到我了。 public class Demo11 extends Thread{ public static void main(

DevSonGo的博客 655

智能水下机器人设计: 基于MATLAB的水下机器人动力学建模和控制系统设计,包括水下环境感知、路径规划和任务执行等

智能水下机器人是指能够在水下自主完成各种任务的机器人,例如探测、勘察、救援等。它具有广阔的应用前景,可用于海洋环境监测、水下考古、海上作业等领域。基于MATLAB的水下机器人设计可以为科研人员和工程师提供强大的建模和仿真工具,帮助他们设计更智能、更高效的水下机器人。智能水下机器人是未来海洋科技发展的重要方向,它将为海洋科学研究、水下考古和海上作业等领域带来新的机遇。MATLAB是一种功能强大的数学和科学计算软件,它可以为智能水下机器人设计提供强大的工具和支持。

走向CTO的路上... 962

java 线程休眠与唤醒_java 线程的休眠和唤醒

Treead中使用wair() 和notify()/*需求:使用双线程交替打印1,2,3,4.......eg:T11 ------->1T22 ------->2T11 ------->3T22 ------->4T11 ------->5T22 ------->6T11 ------->7T22 ------->8...

weixin_36102930的博客 1182

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

实现两个线程交替执行

题目:使用多线程实现输出的效果为: 1 -1 2 -2 3 -3 4 -4 … package com.thread.synchronizedDemo.lock; import java.util.concurrent.locks.ReentrantLock; /** * @author 007 * @ClassName 类名称 * @Description 类描述 */ publi...

清晨清新清醒 9365

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

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

java多线程 线程交替执行(同步)的各种实现方案

如果想要指定执行顺序,则需要用信号量,或者自己实现一个标志位去模拟信号量如果不需要指定执行顺序,则谁先竞争到锁就谁先执行,执行完后唤醒另一个线程,再进入wait状态。

qq_43800449的博客 2901

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

6-2 jmu-Java-07多线程-交替执行 (25分)

有一连串任务,需要两个线程交替执行。线程1执行完任务1后,线程2才能执行任务2,接下来线程1执行任务1,如此交替执行下去。直到所有任务执行完毕。 定义Repo类代表任务仓库,使用字符串代表任务。该类拥有: 构造函数: /将传递进来的字符串以空格分隔分解为多个不同的任务,并存储起来。如"1 2 3 4 5 6"被分解成6个任务1,2,3,4,5,6/ public Repo(String items) { } 方法: int getSize(); //返回Repo包含的任务数量。注意:完成任务的时候,需要将

sddfnsff的博客 4197

Java面试题:多个线程交替执行

Java面试题:多个线程交替执行 文章目录Java面试题:多个线程交替执行前言1.Condition 版本2.公平锁3.如何解决线程打印顺序的问题 前言 最近在一些技术群里看到有很多小伙伴面试的时候碰到这个多线程的笔试题,实现两个线程交替打印,或者是实现多个线程的交替打印这种类似的题目。 本文提供三种解题思路和实现 利用 Condition 类实现 利用公平锁实现 超过 2 个线程,利用队列来保证线程执行的顺序 1.Condition 版本 缺陷是超过 2 个线程之后无法保证执行的顺序 public

谢文峰的博客 4967

java 之 三个线程交替执行任务

import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * Condition实现线程间通信 * @author ETHAN * */ public class Thre

ETHAN IN IT 5481

java线程的交替执行与谦让执行

1.两个线程的交替执行 package myThread; public class alternateThread { Object o=new Object(); Boolean f=true; class Thread1 extends Thread{ @Override public void run() { ...

qq_37001101的博客 607

Java中多个线程交替循环执行

有些时候面试官经常会问,两个线程怎么交替执行呀,如果是三个线程,又怎么交替执行呀,这种问题一般人还真不一定能回答上来。多线程这块如果理解的不好,学起来是很吃力的,更别说面试了。下面我们就来剖析一下怎么实现多个线程顺序输出。 两个线程循环交替打印 //首先我们来看一种比较简单的方式 public class ThreadCq { public static v...

weixin_30819085的博客 1231

java 线程交替执行_java如何让多个线程交替执行?

曾经有面试官问过这样一个问题,如何让两个线程交替打印奇数和偶数?如何让多个线程交替执行?回答这个问题之前需要先了解java多线程的运行机制,线程间通信机制,线程同步问题。这个问题我知道的实现方案有两种,一种是基于synchronized和wait/notify,另外一种是基于Lock和Condition.1.基于synchronized和wait/notifypackage org.stathry...

weixin_29062823的博客 528

Java线程通信:三个线程交替打印1-100

本文实现一个线程通信的例子:三个线程交替打印1-100。

渔舟的博客 5245

两个线程交替打印A1B2C3 ... 的几种实现方式

有以下需求: 两个线程,需要打印字母和数字,格式A1B2C3 … 这个问题涉及到线程的等待,唤醒,线程间通信等知识。 下面看看实现代码: import java.util.concurrent.locks.LockSupport; /** * @author liming * @date 2020/10 * @description 交替打印 A1B2C3 ... */ public class AlternatePrint { static Thread t1 = null, t2 =

wandou9527的博客 2360

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

描述 两个线程,一个打印100内的奇数一个打印100内的偶数,交替执行。 //要打印的资源 public class Num { int i=1; boolean flag = false; //两个线程,交替执行的一个标志 }//打印奇数的线程 public class PrintQi implements Runnable{ Num num ; public

脚踏实地 3万+

JAVA两个线程交替打印

JAVA两个线程交替打印题目使用java.util.concurrent.locks.ReentrantLock;注意点:流程图代码 题目 两个线程,一个负责打印1,3,5.。。。99; 另一个负责打印2,4,6,。。。100; 要交替进行,最后打印出来的次序是1,2,3,4,5,6,。。。99,100 使用java.util.concurrent.locks.ReentrantLock; 分析,...

gzjungle的博客 5051
上一篇: 数据库三大范式详解
下一篇: 数据库事务的四大特性以及事务的隔离级别
java1993666
博客等级 码龄11年 22粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值