package test;
public class Test {
public static void main(String[] args) {
new Window(窗口1).sta...
package test;
public class Test {
public static void main(String[] args) {
new Window("窗口1").start();
new Window("窗口2").start();
new Window("窗口3").start();
}
}
class Window extends Thread {
private static int tickets = 100;
public Window() {
super();
// TODO Auto-generated constructor stub
}
public Window(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public synchronized void run() {
while (true) {
if (tickets == 0) {
break;
}
tickets--;
System.out.println(getName() + "卖出了1张票,还剩" + tickets + "张");
try {
Thread.sleep(30);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
你这个代码是锁不住的,同步需要了解什么是多线程的安全问题,有没有多线程的安全问题,加锁是为了解决多线程的安全问题,另外,也需要看是否是同一把锁,你这三个对象,this代表的是三个对象,而方法锁实际等同于this锁。不是同一把锁,所以是锁不住的。多测试几遍就能看出不同。
一周热门 更多>