本帖最后由 张然龙 于 2014-4-29 15:52 编辑
你开启的四个线程 ,new 了四个对象 ,
- Ticket t1=new Ticket();
- Ticket t2=new Ticket();
- Ticket t3=new Ticket();
- Ticket t4=new Ticket();
复制代码
也就是说 你的内存堆内存中存在着四个对象的引用,这四个对象的引用各有一个tick变量 ,虽说是相同名字,但是却不是一个变量哦。。
如果想解决这个问题有两种方式,一种是像你说的 把tick设置成静态变量
第二种方法就是创建Ticket tic=new Ticket();对象 ,然后Thread thread=new Thread(tic);,然后 thread.start();就可以让四个线程共同拥有一个对象,达到同步的目的,代码如下↓
- class TicketDemo
- {
- public static void main(String[] args)
- {
- Ticket tic=new Ticket();
- Thread thread1=new Thread(tic);
- Thread thread2=new Thread(tic);
- Thread thread3=new Thread(tic);
- Thread thread4=new Thread(tic);
- thread1.start();
- thread2.start();
- thread3.start();
- thread4.start();
- }
- }
复制代码
|