本帖最后由 奋斗的小耗子 于 2014-7-2 11:35 编辑
学习到了多线程的学习到了多线程的安全问题解决方式,题目是多个窗口同时卖票,有四个线程同时运行,当使用了synchronized方法后,运行时却始终是一个线程在处理,之后把Tick改成4000也没用,后来索性照着毕老师视频里的代码写,
可结果还是不一样,请大家看看,帮忙分析下是什么原因,小弟刚解除JAVA,还望多多关照~
- class Ticket implements Runnable
- {
- private int tick = 100;//100张
- Object obj = new Object();
- public void run()
- {
- while(true)
- {
- synchronized(obj)
- {
- if(tick>0)
- {
- try{Thread.sleep(10);}catch(Exception e){}
- System.out.println(Thread.currentThread().getName()+"...sale:"+tick--);
- }
- }
- }
- }
- }
- class TicketDemo
- {
- public static void main(String[] args)
- {
- Ticket t = new Ticket();
- new Thread(t).start();//创建了一个线程
- new Thread(t).start();//创建了一个线程
- new Thread(t).start();//创建了一个线程
- new Thread(t).start();//创建了一个线程
- }
- }
复制代码
|
|