`
xiangxingchina
  • 浏览: 524197 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

双线程轮询打印

 
阅读更多

静态变量

/**
 * @author luxiangxing
 * @time 2017年5月7日
 * @email xiangxingchina@163.com
 * @tel 15330078427
 */
public class TwoThread implements Runnable {
	private int id;
	static Integer c ;
	private Object o;

	public TwoThread(int id, Object o) {
		this.id = id;
		this.o = o;
	}

	@Override
	public void run() {
		synchronized (o) {
			while (this.c < 1000) {
//				 System.out.println(id+"> "+this.c);
				if (this.c % 2 == id) {
					System.out.println(id + " - " + c++);
					o.notify();
				} else {
					try {
						o.wait();
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}
	}

	public static void main(String[] args) {
		Object o = new Object();
		TwoThread t1 = new TwoThread(1, o);
		TwoThread t2 = new TwoThread(0, o);
		new Thread(t1).start();
		new Thread(t2).start();
	}
}

 对象方式

/**
 * @author luxiangxing
 * @time 2017年5月7日
 * @email xiangxingchina@163.com
 * @tel 15330078427
 */
public class TwoThread implements Runnable {
	private int id;
	static Integer c ;
	private Object o;
	Num n ;
	public TwoThread(int id, Object o,Num n) {
		this.id = id;
		this.o = o;
		this.n = n;
	}

	@Override
	public void run() {
		synchronized (o) {
			while (this.n.i < 1000) {
//				 System.out.println(id+"> "+this.c);
				if (this.n.i % 2 == id) {
					System.out.println(id + " - " + this.n.i);
					this.n.setI(this.n.i+1);
					o.notify();
				} else {
					try {
						o.wait();
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}
	}

	public static void main(String[] args) {
		Object o = new Object();
		Num n = new Num(1);
		TwoThread t1 = new TwoThread(1, o,n);
		TwoThread t2 = new TwoThread(0, o,n);
		new Thread(t1).start();
		new Thread(t2).start();
	}
}

class Num{
	int i ; 
	public Num(int i) {
		this.i = i ;
	}
	public void setI(int i) {
		this.i = i;
	}
}

 

分享到:
评论

相关推荐

    松下PLC轮询程序

    松下plc 轮询 标准 程序 程式,基于松下plc做的485通讯和几台其他设备通信

    S7-200SMART进行MODBUS轮询卡死时重新开启轮询的具体方法.docx

    然而,在进行MODBUS通信轮询时,可能会遇到轮询卡死的情况,即PLC无法按照预设顺序执行通信任务。本文将详细介绍如何在S7-200SMART PLC中检测和处理轮询卡死问题,以及如何重新开启轮询。 首先,理解轮询机制是关键...

    c# 实现轮询算法实例代码

    在C#编程中,轮询算法是一种常用的策略,它用于在多个选项或资源之间均匀分配注意力或处理。在这个实例中,轮询算法被用来决定在用户访问页面时,一段特定的代码(例如曝光代码)是否按照预设的概率显示。下面我们将...

    一个轮询的java案例

    标题中的“一个轮询的Java案例”提示我们这个话题与编程中的轮询机制有关,而描述则提供了一个有趣的比喻,用以解释轮询的过程。在这个比喻中,20个人代表了程序中的多个参与者,3包降落伞相当于有限的资源,每数到...

    S7-200SMART-modbusRTU轮询程序(读轮询+写优先)附使用说明.zip

    《S7-200SMART Modbus RTU轮询程序详解及使用指南》 在工业自动化领域,西门子的S7-200SMART系列PLC因其小巧、灵活、功能强大而广受青睐。本篇文章将深入探讨如何在S7-200SMART PLC上实现Modbus RTU协议的轮询程序...

    单片机 程序架构 时间片轮询. 时间片轮询..pdf

    ### 单片机程序架构中的时间片轮询技术解析 #### 概述 单片机是一种集成微处理器、存储器及多种输入/输出接口于一体的微型计算机系统,在控制系统领域有着广泛的应用。随着技术的发展,单片机的应用场景越来越复杂...

    mbus_arb.zip_8-1公平轮询仲裁_mbus_仲裁_轮询_轮询 仲裁

    本文将深入探讨标题"mbus_arb.zip_8-1公平轮询仲裁_mbus_仲裁_轮询_轮询仲裁"所涉及的核心知识点,主要集中在8-1公平轮询仲裁机制以及其在MBus(可能是自定义总线或特定应用的总线)上的实现。 首先,我们来理解“8...

    设置轮询间隔

    标题中的“设置轮询间隔”通常是指在编程或者系统配置中,为了实现定时任务或监控功能,需要设定一个时间间隔来定期检查或处理数据。这个时间间隔被称为轮询间隔,它在很多IT场景中都有应用,例如在服务器监控、...

    S7-200SMART通过循环移位实现MODBUS RTU轮询的具体方法示例.docx

    本示例主要介绍如何利用S7-200SMART通过循环移位技术实现MODBUS RTU轮询,以高效地管理多个从站设备。 首先,了解轮询的基本概念。轮询是主站设备按照一定的顺序依次询问各个从站设备,以获取或发送数据的一种通信...

    数字轮询小程序

    同时,为了确保用户界面的响应性和效率,轮询操作通常会在后台线程进行,避免阻塞主线程导致界面卡顿。 此外,考虑到“order”这个文件名,它可能是程序所需的数据文件或配置文件。如果这是个数据文件,那么程序...

    S7-200SMART Modbus轮询应用库(使用说明+库文件).zip

    《S7-200SMART Modbus轮询应用库详解》 S7-200SMART是西门子推出的一款小型PLC(可编程逻辑控制器),它在工业自动化领域广泛应用。Modbus则是一种开放的通信协议,允许不同设备之间进行数据交换。本篇文章将深入...

    打印机监控 打印内容记录

    总结来说,打印机监控和打印内容记录是通过Hook和轮询技术结合实现的,它们可以提供关键的管理信息,帮助企业管理打印活动,提高信息安全,并优化资源利用。"PrinterHook"作为一个可能的工具或代码库,为开发者提供...

    c# 多线程(轮询,等待,回调)操作实例

    在本实例中,我们将探讨如何利用C#实现多线程,特别是涉及轮询、等待和回调的异步操作,这对于理解和应用多线程编程至关重要。 1. **多线程基础**: - 在C#中,我们可以通过`System.Threading`命名空间中的`Thread...

    init.c轮询注册事件

    通过本文的介绍,我们可以看出,“init.c轮询注册事件”这一概念在Linux内核初始化过程中扮演着极其重要的角色。它不仅有助于提高系统的启动效率,还能增强内核的稳定性和可靠性。对于从事操作系统开发或维护工作的...

    S7-200SMART-modbus轮询源程序(定时器+计数器方式).rar

    标题中的"S7-200SMART-modbus轮询源程序(定时器+计数器方式)"指的是使用西门子S7-200SMART系列PLC进行MODBUS通信的一种编程实现方式。在这个程序中,轮询是通过定时器和计数器配合来完成的,这通常是为了周期性地...

    S7-200SMART通过循环移位实现MODBUS轮询源程序.zip

    标题中的"S7-200SMART通过循环移位实现MODBUS轮询源程序"涉及到的是在西门子S7-200SMART系列PLC中,利用编程技术进行MODBUS通信的一种具体应用。这里的核心是MODBUS轮询,它是MODBUS通信协议中的一种常见操作模式,...

    S7-200 SMART MODBUS轮询程序的示例及具体使用方法的解释说明.rar

    《S7-200 SMART MODBUS轮询程序详解与应用指南》 在工业自动化领域,西门子的S7-200 SMART系列PLC因其小巧、灵活、功能强大而受到广泛应用。MODBUS通信协议作为工业设备间通信的通用标准,使得不同厂商的设备能够...

    轮询采集指令Modbus PLC说明V3.2.pdf_轮询采集指令ModbusPLC说明_

    《轮询采集指令Modbus PLC说明V3.2》详细阐述了如何利用轮询采集指令与Modbus协议来实现对可编程逻辑控制器(PLC)的数据监控和管理。这一技术在工业自动化领域广泛应用,帮助工程师远程获取和控制设备状态,确保...

    stm32基于轮询方式的串口收发程序

    在进行串口通信时,有多种实现方式,其中轮询方式是基础且直观的一种。本教程将详细介绍如何在STM32上实现基于轮询的串口收发程序。 串口通信,也称为UART(通用异步接收发送器),是一种简单但实用的串行通信协议...

    MODBUSPOLL轮询.rar

    MODBUSPOLL轮询是工业自动化领域中一种常见的通信协议应用,主要针对使用TIA PORTAL V15.0这一西门子PLC编程软件的用户。TIA PORTAL是西门子综合工程与自动化解决方案的平台,V15.0版本提供了更强大的功能和优化的...

Global site tag (gtag.js) - Google Analytics