`
kevin_in_java
  • 浏览: 29450 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

多线程同步小例子,100张票3个窗口同时销售

阅读更多

公司不能登录,很久不发博客,今天偶然看到多线程,发现自己同步用的不好,简单写个例子用synchronized 关键字的例子,100张票 3个窗口同时销售。另外加锁也可以用Lock 接口的实现类,此处不做拓展,可参考Java核心 基础卷

直接上代码。

 

package com.learning.test;

public class TestMutithread {

	public static void main(String[] args) {
		Ticket ticket = new Ticket();
		ticket.number = 100;
		TicketBll ticketBll = new TicketBll(ticket);
		SellTicketRunnable sellTicketRunnable = new SellTicketRunnable(
				ticketBll);
		new Thread(sellTicketRunnable, "A").start();
		new Thread(sellTicketRunnable, "B").start();
		new Thread(sellTicketRunnable, "C").start();
		new Thread(sellTicketRunnable, "D").start();
	}

}

class Ticket {
	public int number;
}

class TicketBll {
	public Ticket ticket;

	public TicketBll(Ticket ticket) {
		this.ticket = ticket;
	}

	public void sellTicket() {

		while (ticket.number > 0) {
			synchronized (ticket) {

				System.out.println(Thread.currentThread().getName() + " sells "
						+ ticket.number--);
			}

			try {
				Thread.sleep(100l);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}

		}

	}

}

class SellTicketRunnable implements Runnable {

	private TicketBll ticketBll;

	public SellTicketRunnable(TicketBll ticketBll) {
		this.ticketBll = ticketBll;

	}

	@Override
	public void run() {
		ticketBll.sellTicket();
	}

}
 
0
1
分享到:
评论

相关推荐

    多线程案例

    介绍多线程同步的基础知识 首先我要提一点,关于线程的基础知识,一个程序,即一个进程,可以有很多个线程,当然,至少要有一个线程,即主线程.相信大家都知道多线程的好处吧,举个书上的例子 吧,Windows在复制文件的时候,有...

    Delphi多线程编程之三 同步读写全局数据

    三、还有一种用信号量对象来管理线程同步的,它是在互斥的基础上建立的,但信号量增加了资源计数的功能,预定数目的线程允许同时进入要同步的代码。有点复杂,想不到在哪可以用,现在就不研究论了。 unit Tst_...

    java模拟多线程买票问题.docx

    多线程买票是java中的一个经典案例,其主要思想无非包括2点,synchronized和锁,两者中,前者实现同步,后者为同步的线程提供锁,从而实现多个线程共享同一份资源时候,能够同步进行; 经典的方式是synchronized + 锁...

    Java抢火车票程序源码-multithread:多线程

    单线程是排队执行,也就是同步,人一般都是单线程操作,起床、上厕所、刷牙、吃饭、上班,多线程的例子比如火车站,同时有多两火车进站和出站,它是异步,很难想象要是火车站是单线程的是个什么样的场景。...

    在同步代码结束后,使用ReleaseMutex(THandle

    三、还有一种用信号量对象来管理线程同步的,它是在互斥的基础上建立的,但信号量增加了资源计数的功能,预定数目的线程允许同时进入要同步的代码。有点复杂,想不到在哪可以用,现在就不研究论了。 发表于 @ 2008...

    Windows环境下32位汇编语言程序设计 第2版(罗文斌) 完整光盘

    使用临界区对象解决多线程同步问题 Chapter12\ThreadSyn\UseEvent ;使用事件对象解决多线程同步问题 Chapter12\ThreadSyn\UseMutex ;使用互斥对象解决多线程同步问题 Chapter12\ThreadSyn\UseSemaphore ;使用信号灯...

    Windows环境下32位汇编语言程序设计(最新琢石成器版)附属光盘

    使用临界区对象解决多线程同步问题 Chapter12\ThreadSyn\UseEvent ;使用事件对象解决多线程同步问题 Chapter12\ThreadSyn\UseMutex ;使用互斥对象解决多线程同步问题 Chapter12\ThreadSyn\UseSemaphore ;使用信号...

    Windows环境下32位汇编语言程序设计_随书光盘

    使用临界区对象解决多线程同步问题 Chapter12\ThreadSyn\UseEvent ;使用事件对象解决多线程同步问题 Chapter12\ThreadSyn\UseMutex ;使用互斥对象解决多线程同步问题 Chapter12\ThreadSyn\UseSemaphore ;使用信号灯...

    Windows程序设计(第2版)王艳_源代码

     3.2 线程同步   3.3 设计自己的线程局部存储   3.4 设计线程类——CWinThread   3.5 【实例】多线程文件搜索器  第4章 Windows图形界面   4.1 了解窗口   4.2 第一个窗口程序  . 4.3 一个...

    MFC教程入门知识全集.rar

    11.2.3 实例:通过创建多线程来编写网络聊天程序 11.3 MFC 的线程处理 11.3.1 创建工作者线程 11.3.2 创建用户界面线程 11.4 线程同步 11.4.1 为什么要同步 11.4.2 等待函数 11.4.3 同步对象 11.4.3.1 关键...

    vc++ 应用源码包_3

    演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端...

    vc++ 开发实例源码包

    演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology 文档。 P2P视频技术源码(含开发文档) 目前的协议有如下一些特点: 1) 客户向服务器发送请求, 每个请求的长度不定. 请求...

    vc++ 应用源码包_1

    演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端...

    vc++ 应用源码包_6

    演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端...

    vc++ 应用源码包_2

    演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端...

    vc++ 应用源码包_5

    演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端...

    JAVA上百实例源码以及开源项目源代码

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,让读者及时练习,巩固提高,并提供了参考答案 目录 第1篇 ...

    PT80-NEAT开发指南v1.1

    建立一个应用程序 ................................................................................................................................ 17 应用程序的关闭 .......................................

    JAVA上百实例源码以及开源项目

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

Global site tag (gtag.js) - Google Analytics