本帖最后由 Jiewin 于 2013-6-4 22:58 编辑
- class Ticket implements Runnable
- {
- private int tick = 10000; //设置票数。
- public void run()
- {
- while(true)
- {show();}
- }
- public synchronized void show()
- {
- if(tick>0)
- {
- try{Thread.sleep(10);}catch(Exception e){}
- String aa = Thread.currentThread().getName();
- System.out.println(aa+" "+tick--);
- }
- }
- }
- class ThisLockDemo
- {
- public static void main(String[] args)
- {
- 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();
- }
- }
复制代码 此程序就是老师讲到多线程的同步函数时所讲解的例子,老师执行时4个线程都运行了,但为什么我的运行的只有1个线程?老师说如果是多核CPU,可能会出现这样问题,但把票数设置高点就行,老师的设置1000,就有多线程出来了,但我都设置10000了,居然都只有thread-0线程在运行,我完全看不出代码哪里有错!请大家看看问题在哪里!
|