Я решаю вопрос ниже. Это бросает NullPointerException
, но я не понимаю, как значение c равно null. Я уже инициализировал его в методе go()
.Почему объект c null в методе запуска?
package swain.javainterviewhub.blogspot.in;
class Chicks{
synchronized void yack(long id){
for(int x=1;x<3;x++){
System.out.println(id+" ");
Thread.yield();
}
}
}
public class JavaInterviewHub implements Runnable {
Chicks c;
public static void main(String[] args) {
new JavaInterviewHub().go();
}
void go(){
c=new Chicks();
new Thread(new JavaInterviewHub()).start();
new Thread(new JavaInterviewHub()).start();
}
@Override
public void run() {
c.yack(Thread.currentThread().getId());
}
}
консоли:
Exception in thread "Thread-0" Exception in thread "Thread-1" java.lang.NullPointerException
at swain.javainterviewhub.blogspot.in.JavaInterviewHub.run(JavaInterviewHub.java:28)
at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
at swain.javainterviewhub.blogspot.in.JavaInterviewHub.run(JavaInterviewHub.java:28)
at java.lang.Thread.run(Unknown Source)
Каждый экземпляр JavaInterviewHub имеет свое собственное поле гр? – immibis
'new Thread (новый JavaInterviewHub()). Start();' - Созданный здесь '' JavaInterviewHub '' не имеет своего поля 'c', инициализированного. – resueman
@immibis вы можете вкратце объяснить, что здесь происходит – Sitansu