[黑马程序员]多线程_安全
2014-03-16 13:44
162 查看
/* * 需求:简单的买票程序 * 多个窗口买票。 * * 会有安全问题。 * * * 问题的原因: * 当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完。 * 另一线程参与进来执行,导致共享数据的错误。 * * 解决办法: * 多多条操作共享数据的语句,只能让一个线程都执行完,在执行过程中,其他线程不可以进行执行。 * * java对多线程的安全问题,提供了专业的解决方式: * --》同步代码块 * * synchronized(对象) * { * 需要同步的代码块 * } * * * 同步的前提: * 1.必须要有两个或者两个以上的线程 * 2.必须是多个线程使用同一个锁。 * * 必须保证同步中只有一个线程执行。 * * 好处:解决多线程安全问题 * 弊端:多个线程都需要判断锁,较为消耗资源 */ package test.itheima; public class ThreadTicketDemo { /** * @param args */ public static void main(String[] args) { /* * Ticket t1 = new Ticket(); Ticket t2 = new Ticket(); Ticket t3 = new * Ticket(); Ticket t4 = new Ticket(); * * t1.start(); t2.start(); t3.start(); t4.start(); */ Ticket t = new Ticket(); Thread t1 = new Thread(t); Thread t2 = new Thread(t); Thread t3 = new Thread(t); Thread t4 = new Thread(t); t1.start(); t2.start(); t3.start(); t4.start(); } } class Ticket implements Runnable {// Thread { private static int tick = 10000; Object obj = new Object(); public void run() { while (true) { synchronized (obj) { if (tick > 0) { try{Thread.sleep(1000);}catch(Exception e){} System.out.println(Thread.currentThread().getName() + " sale: " + tick--); } } } } }
相关文章推荐
- 黑马程序员—多线程的两种创建方式与多线程安全问题
- 黑马程序员——Java多线程之线程安全问题
- 黑马程序员——java中关于同步函数(或同步代码块)解决多线程安全问题的加锁
- 黑马程序员——JAVA基础之多线程的安全问题
- 黑马程序员--Java 多线程的安全问题
- 黑马程序员—多线程(下)--多线程安全问题及唤醒等待机制
- 黑马程序员-JDK1.5多线程安全解决方案Lock详解
- 黑马程序员_多线程之同步问题的前期,以及安全问题的发现和解决
- 黑马程序员------多线程(No.1)(概述、线程的创建、安全问题、同步锁、同步函数)
- 黑马程序员--Java基础--多线程安全问题
- 黑马程序员 第27天 多线程安全问题 线程停止
- 黑马程序员:Java基础——多线程之安全问题与同步
- 黑马程序员 第五篇:关于多线程及其安全问题
- 黑马程序员—多线程安全问题(锁)
- 黑马程序员_java的多线程(对第十一课创建多线程及多线程安全问题总结)
- 黑马程序员—10—java基础:有关多线程安全的学习笔记和学习心得体会
- 黑马程序员——多线程——多线程概述,实现,控制与安全问题的解决
- 黑马程序员-JAVA基础-多线程的安全、同步与死锁
- 黑马程序员——多线程中的安全问题 :
- 黑马程序员-多线程(线程的安全问题与锁的理解)