公司不能登录,很久不发博客,今天偶然看到多线程,发现自己同步用的不好,简单写个例子用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();
}
}
分享到:
相关推荐
在我们的例子中,"4窗口同时买票"就是一种多线程的体现,每个售票窗口可以看作一个独立运行的线程,它们可以同时为不同的客户办理购票业务,提高工作效率。 多线程在实际应用中有着广泛的应用,例如在服务器端处理...
这个例子“07-01 三个售票窗口同时出售20张票(并发)”旨在探讨如何在多线程环境下实现并发销售,特别是针对售票系统的场景。在这样的系统中,并发处理能提高效率,但同时也引入了数据一致性的问题。 并发是指多个...
在IT行业中,尤其是在Windows开发领域,多线程同步是一个至关重要的概念。MFC(Microsoft Foundation Classes)是微软提供的一种C++库,它为构建Windows应用程序提供了丰富的类和接口。在这个主题中,我们将深入探讨...
总结,MFC编写的用户界面多线程小例子是一个很好的学习资源,它演示了如何在MFC应用程序中实现多线程,以及如何在多线程环境下有效地管理用户界面。通过深入理解这个例子,开发者可以更好地掌握MFC和多线程编程,...
线程同步是多线程编程中一个重要的概念,它确保了多个线程在访问共享资源时能按照一定的顺序或者规则进行,防止数据的不一致性和资源的竞争。在这个“线程同步解决火车站售票问题”的例子中,我们可以通过线程同步...
在VC++编程中,创建和显示窗口...总的来说,"VC++在线程中创建并显示窗口"是一个涉及多线程编程、Windows API、窗口消息处理和线程同步的实践课题。理解和掌握这些知识点对于开发高效且稳定的Windows应用程序至关重要。
在这个“易语言借助乐玩图色脚本多线程例子”中,我们将探讨如何利用易语言结合特定的第三方库,如“乐玩”和“鱼刺”,实现多线程编程。 乐玩图色脚本可能是指一个图形界面工具或库,它为易语言提供了丰富的图形...
在IT领域,多线程同步操作是编程中的一个重要概念,特别是在需要处理多个任务或操作多个窗口的场景下。本文档“多线程同步操作多个窗口[参照].pdf”似乎涉及了如何在软件网络技术中使用多线程进行窗口管理及同步执行...
本文将深入探讨如何使用Win32 API在Windows系统上实现多线程编程,以创建一个能同时执行不同任务的应用程序,具体参考标题为"基于win32的多线程实现例子"的示例。 一、多线程概念 多线程是指在一个进程中同时运行多...
在IT领域,多线程是一种常见的编程技术,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在给定的“多线程例子”中,我们可以通过分析标题和描述来理解这个示例的核心内容。 标题“多线程例子”表明...
在本文中,我们将深入探讨如何使用Python的多线程和同步锁来实现一个多窗口订票系统,以此防止并发问题,如一票多卖或无票也卖。首先,我们需要了解多线程的基本概念。 **多线程**: 多线程是指在一个程序中同时...
在这个"售票"实例中,我们可以模拟一个简单的线程同步模型,创建两个线程分别代表两个售票窗口,它们共享一个票库存。通过使用上述的同步机制,我们可以确保票不会被超额销售,且每个线程都能够公平地访问票库存。这...
标题中的“pb多线程例子.rar”表明这是一个关于PowerBuilder(PB)编程的多线程应用实例,包含源代码。PowerBuilder是一种流行的、基于事件驱动的编程环境,主要用于开发企业级应用程序,尤其在数据窗口技术方面表现...
多线程是编程中的一个重要概念,允许程序同时执行多个独立的任务,提高应用程序的响应速度和效率。 在描述中提到的“multithread.pbl”是一个PowerBuilder库文件,它包含了多线程的例子代码。PBL(PowerBuilder ...
标题中的“PB多线程例子,PB源码”指的是PowerBuilder(PB)应用程序中的多线程编程示例,而源码则是实现这一功能的具体代码。PowerBuilder是一款强大的、基于对象的编程工具,主要用于构建数据库应用系统。在多线程...
如果多个窗口同时售票,每个窗口都可以读取和写入票的数量,那么就可能出现错票和重票的问题。 二、线程安全问题分类总结 (1)局部变量不能共享 局部变量是每个线程独有的,不可以被其他线程访问和修改。 (2)...
标题中的“一个初步的用VB写“多线程”程序的例子”表明这是一个关于使用Visual Basic (VB)编程语言实现多线程技术的示例项目。多线程是计算机编程中的一个重要概念,允许程序同时执行多个任务,从而提高效率和响应...
首先,多线程是现代软件开发中的一个重要概念,它允许程序在同一时间执行多个独立的任务。在Halcon中,通过多线程可以并行处理图像,例如,一边进行图像采集,一边进行图像分析,这样可以极大地提高整体处理效率,...
通过以上步骤,我们可以构建一个基于VS2015的MFC多线程同步套接字网络聊天室。这样的项目不仅提供了实践MFC和网络编程的机会,而且也是一个展示多线程并发处理和异步通信技术的好例子。希望这个指南对你的学习有所...