public class Chicks {
synchronized void yacks(long id)
{
for(int x = 1; x<3; x++)
{
System.out.println(id + " ");
Thread.yield();
}
}
}
class ChickYacks implements Runnable
{
Chicks c; // No exception if I declare it as static
public static void main(String[] args) {
new ChickYacks().go();
}
public void run()
{
c.yacks(Thread.currentThread().getId()); //Throws a Nullpointer exceptin
}
void go()
{
c = new Chicks();
new Thread(new ChickYacks()).start();
new Thread(new ChickYacks()).start();
}
}
Почему он выбрасывает исключение Nullpointer в run method()
. Все выглядит хорошо для меня. Когда я объявляю Chicks 'c'
статичным, но я не понимаю его почему?Внедрение многопоточного экземпляра экземпляра
Обратите внимание, что это не имеет ничего общего с многопоточности. Вы просто создаете объекты, забывая присвоить ненулевое значение полю этих объектов, а затем вызывать метод в этом нулевом поле. –