我收到此错误:
"non-static method isAlive() cannot be referenced from a static context"
这段代码有什么问题。请。
我想检测线程是否还活着...... 任何代码方面的帮助都将受到高度赞赏。谢谢 最大
class RecThread extends Thread { public void run() { recFile = new File("recorded_track.wav"); // Output file type AudioFileFormat.Type fileType = null; fileType = AudioFileFormat.Type.WAVE; // if rcOn =1 thread is alive int rcOn; try { // starts recording targetDataLine.open(audioFormat); targetDataLine.start(); AudioSystem.write(new AudioInputStream(targetDataLine), fileType, recFile); if (RecThread.isAlive() == true) { rcOn =1; } else { rcOn =0; } } catch (Exception e) { showException(e); } // update actions recAction.setEnabled(true); stopRecAction.setEnabled(false); } }
答案 0 :(得分:2)
if (RecThread.isAlive() == true) {
这条线存在问题。 isAlive()不是静态方法,这意味着它只能作用于Thread的实例。您通过使用类型(RecThread)而不是对象调用静态上下文来使用它。
答案 1 :(得分:0)
您尝试以静态方式访问非静态方法。我的意思是,如果运行当前实例的线程没有死,则isAlive()方法返回。
这就是为什么isAlive()不是静态的,它是一个实例(对于线程的状态)而不是类本身。
答案 2 :(得分:0)
从run()中检查isAlive()没有意义..如果它在run()中执行代码,则意味着它是活的 如果某个其他线程有一个RecThread对象,那么该线程可以使用recThread.isAlive()来查看它是否仍在运行