多线程知识学习
来源:互联网 发布:c语言判断数字的位数 编辑:程序博客网 时间:2024/06/18 12:26
我们现在写一个买票的多线程。
例子:
public class SellTicket implements Runnable { private Integer tickets = 50; @Override public void run() { while (true){ if(tickets>0){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println( Thread.currentThread().getName() + " 正在销售第 " + tickets-- + " 张票" ); } } }}
下面我们通过三个线程来消耗这个买票的过程。
public class SellTicketDemo { public static void main(String[] args) { SellTicket target = new SellTicket(); Thread t1 = new Thread(target,"t1"); Thread t2 = new Thread(target,"t2"); Thread t3 = new Thread(target,"t3"); t1.start(); t2.start(); t3.start(); }}``控制台:![这里写图片描述](http://img.blog.csdn.net/20160629144934277)我们可以考虑使用同步方法还解决,这里我们使用锁来进一步控制。定义锁对象。示例代码:
public class SellTicket implements Runnable {
private Integer tickets = 50;private Lock lock = new ReentrantLock();@Overridepublic void run() { while (true){ try { lock.lock(); if(tickets>0){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println( Thread.currentThread().getName() + " 正在销售第 " + tickets-- + " 张票" ); } }finally { lock.unlock(); } }}
}
“`
这下业务逻辑就正常实现了。
0 0
- IOS 多线程知识学习
- 多线程知识学习
- java学习--多线程相关知识
- 多线程知识
- 多线程知识
- 多线程知识
- 多线程知识
- 多线程知识
- 多线程知识
- 多线程知识
- 多线程知识
- 多线程知识
- JAVA并发性和多线程学习笔记-概念知识
- 【iOS学习笔记 16-2-22】iOS多线程知识总结
- android 多线程知识
- Java【多线程知识总结】
- Delphi 多线程知识
- 多线程 相关知识
- 1.A+B Problem
- 自动布局方法教程
- python os模块方法总结
- iOS中常用动画大集合
- 解决IE8不兼容HTML5标签的方法
- 多线程知识学习
- WebView与Cookies 的问题
- Cadence基础知识0(Cadence OrCAD和Allegro SPB区别)
- Redis分布式锁java实现
- 深入一下hashcode
- PyCharm设置python新建文件 模板修改 设置 文件为python 和utf-8 解决控制台输出乱码
- C++编写DLL并使用C++调用
- apktool更新网址
- iOS Instruments来检验你的app