帮忙看一下JAVA的一段代码

来源:百度知道 编辑:UC知道 时间:2024/06/05 12:42:20
import java.io.*;
import java.lang.Math.*;
class JOB extends Thread{
private String jobName;
private int loopLmt;
public JOB(int loopLmt,String jobName){
this.loopLmt=loopLmt;
this.jobName=jobName;
}
private void PAUSE(double sec){
try {Thread.sleep(Math.round(1000.0*sec));}
catch(InterruptedException ie){};
}
public void run(){
for(int i=1;i<=loopLmt;i++){
System.out.println(jobName+":work"+i);
PAUSE (Math.random());
}
}
}
public class mainclass {
public static void main(String args[]){
JOB job1=new JOB(4,"job1");
JOB job2=new JOB(4,"job2");
job1.start();
job2.start();
job2.suspend();
System.out.println("job2 is suspend");
try{job1.join();}
catch(InterruptedException ie){}
job2.resume();
System.out.println("job2 is resume");
<

resume()方法只能跟suspend()方法一起使用,但suspend()方法已经遭到反对,因为它具有固有的死锁倾向。如果目标线程挂起时在保护关键系统资源的监视器上保持有锁,则在目标线程重新开始以前任何线程都不能访问该资源。如果重新开始目标线程的线程想在调用 resume 之前锁定该监视器,则会发生死锁。

这段程序没错呀,不知你要实现什么功能效果。
我猜你是要让线程2暂停,线程1运行,线程1运行完成后,恢复线程2,让线程2运行。这段是代码是正确的。

不是很Thread中的方法,不是貌似程序没错把!!楼下的好好解释一下,

不知道你想问什么啊!

不知道你说的错误是什么错误啊,我这里运行好用,你是不是用了别的工具,比如eclipse,提示警告,这两个方法是以过时了.但是还可以用,所以说没有程序没有任何的错误!我的运行结果是:
job1:work1
job2 is suspend
job1:work2
job1:work3
job1:work4
job2 is resume
job2:work1
job2:work2
job2:work3
job2:work4
当然不同的机器,结果不一样.