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();
}
}
在同步代码块synchronized ()中放入对象object时可以同步,为什么放入new Object()匿名对象时不能起到同步的作用?
不同线程启动调用run函数时,执行synchronized (new Object())语句时,锁住的是各自new出来的Object对象。不是同一个对象,所以能起到同步的作。
而用object时
Ticket t = new Ticket(); 只实例化一个Ticket类。
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
Thread t3 = new Thread(t);
Thread t4 = new Thread(t);
synchronized (object)要锁的是同一个对象,所以起到同步的作用