public class Printer {
static Printer obj =null;
private Printer(){}
public static Printer getInstance(){
if(obj==null){
Printer pr=new Printer();
}
return obj;
}
void print(String msg){
System.out.println("["+msg);
try {
Thread.sleep(1000);
} catch(InterruptedException c) {
c.printStackTrace();
}
System.out.println("]");
}
}
class PrintThread implements Runnable {
Printer p;
String msg;
PrintThread(Printer p,String msg) {
this.p=p;
this.msg=msg;
}
public void run() {
p.print(msg);//Getting error in this line
}
}
//Deploying main class
public class Execution {
public static void main(String[] args) {
Printer pr=Printer.getInstance();
Thread t1=new Thread(new PrintThread(pr,"java"));
t1.start();
PrintThread r=new PrintThread(pr,"javadeveloper");
Thread t2=new Thread(r);
t2.start();
}
}
안녕, 이해하기 위해이 프로그램을 작성한 방법 스레드가 작동하는지. 여기에 싱글 톤으로 Printer 클래스를 만들고 Runnable을 구현하여 두 번째 클래스 인 PrintThread에서 스레드를 구현하려고했습니다. 여기서 I는 Run(){}
방법 오버라이드하지만 실행의 시점 JVM은 (PrintThread.run에 "스레드 0"(java.nullPointerException)에예외
는 내가 구글을 시도하고 다른 관련 질문을 읽을 수는 있지만 여전히 나는 문제예외가 존재한다는 Printer.java를 오류 던지고 : 31).