我收到此错误:

"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);

    }
}

最佳答案

if (RecThread.isAlive() == true) {


这条线是有问题的。 isAlive()不是静态方法,这意味着它只能作用于Thread的实例。您在静态上下文中使用它,方法是使用类型(RecThread)而不是对象来调用它。

10-07 20:14