我写了一段查找素数的代码,可是怎么出错了,请大家帮我分析一下原因,找出错误,改正一下啊!严重: Protocol handler pause failed
java.lang.NullPointerException
at org.apache.coyote.tomcat5.CoyoteConnector.pause(CoyoteConnector.java:1444)
at org.apache.catalina.core.StandardService.stop(StandardService.java:521)
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:2347)
at org.apache.catalina.startup.Catalina.stop(Catalina.java:605)
at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:648)代码如下:
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;public class PrimeSearcher extends HttpServlet implements Runnable {

 long lastprime=0;    //最近找到的素数
 Date lastprimeModified=new Date();    //找到这个素数的时间
 Thread searcher;    //后台搜寻线程
public void init() throws ServletException{
searcher=new Thread(this);
searcher.setPriority(Thread.MAX_PRIORITY);    //充分使用系统资源
searcher.start();
}
public void run() {
long candidate=10L;
//开始查找素数的循环
while(true){    //查找
if(ifPrime(candidate)){
lastprime=candidate;    //新的素数
lastprimeModified=new Date();    //找到的时间
}
candidate+=2;
//每次查找时间间隔0.2s
//充分使用系统资源的另一个方法
try{
searcher.sleep(200);
}
catch(InterruptedException igored){}
}
    }
private static boolean ifPrime(long candidate) {
//新从3到它的平方根的所有奇数除
long sqrt=(long)Math.sqrt(candidate);
for(long i=3;i<=sqrt;i+=2){
if(candidate%i==0) return false;    //找到一个因子
}
//不可被整除,所以是素数
return true;
}
    public void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException{
    res.setContentType("text/plain");
    PrintWriter out=res.getWriter();
    if (lastprime==0){
    out.println("Still searching for first prime ...");
    }
    else {
    out.println("The last prime discorved was"+lastprime);
    out.println("at"+lastprimeModified);
    }
    }
    public void destroy(){
    searcher.stop();
       }
}