下面哪些方法可以在任何时候被任何线程调用?
A. sleep()
B. yield()
C. synchronized(this)
D. notify()
E. wait()
F. notifyAll()
下列哪些情况可以终止当前线程的运行?
A. 当创建一个新线程时
B. 当该线程调用sleep()方法时
C. 抛出一个异常时
D. 当一个优先级高的线程进入就绪状态时
下面的程序定义了一个线程PrintThread,该线程打印输出1~1000之间所有3的倍数,每输出一个数休眠1500毫秒,在main方法中创建了该线程的一个实例,并启动该线程。请将下面的程序填写完整。classPrintThreadextends(1){publicPrintThread(Stringstr){(2);//调用父类的构造方法}publicvoidrun(){for(inti=1;i<=1000;i++){if(i%3==0)System.out.println(this.getName()+":"+i);try{(3);//休眠1500毫秒}catch(Exceptione){System.out.println(e.toString());}}}}publicclassExam4{publicstaticvoidmain(String[]args){PrintThreadmyThread=newPrintThread("PrintThread");(4);//启动线程}}
下面的程序定义了一个线程TimeThread,该线程每隔1秒钟输出显示一次当前系统时间,在main方法中使用TimeThread类创建3个新线程,并启动这些线程,请将下面的程序填写完整。importjava.util.*;classTimeThreadimplements(1){publicvoidrun(){while(true){DatecurrentTime=newDate();try{(2);//休眠1秒钟}catch(Exceptione){System.out.println(e.toString());}System.out.println(Thread.currentThread().getName()+":"+currentTime);}}}publicclassEx2{publicstaticvoidmain(String[]args){String[]names={"first","second","third"};TimeThreadmyThread=newTimeThread();for(inti=0;i<3;i++){ThreadthreadObj=newThread(myThread,names[i]);(3);//启动线程}}}