今天练习java线程同步代码块,写了如下的代码
public class SoldTicket extends Thread {
static int ticketLeft = 100;
static String lock;
// 重写父类的构造方法,以便指定进程的名字
public SoldTicket(String name) {
super(name);
}
public SoldTicket() {
super();
}
@Override
public void run() {
synchronized (lock){
while (ticketLeft > 0) {
System.out.println(getName()+"在卖第"+ticketLeft--+"张票。");
}
}
}
}
结果再main方法里开启线程的时候报错了!!!
java.lang.NullPointerException
at SoldTicket.run(SoldTicket.java:17)
网上说字符串没有初始化变量的时候会报这个错误。给String类型的lock变量附一个初值,解决