コード
import javax.sound.sampled.*;
import java.io.*;
public class Tester {
static Thread th;
public static void main(String[] args) {
startNewThread();
while( th.isAlive() == true) {
System.out.println("sound thread is working");
}
}
public static void startNewThread() {
Runnable r = new Runnable() {
public void run() {
startPlaying();
}
};
th =new Thread(r);
th.start();
}
public static void startPlaying() {
try {
AudioInputStream ais = AudioSystem.getAudioInputStream(new File("d:/UnderTest/wavtester.wav"));
Clip clip = AudioSystem.getClip();
clip.open(ais);
clip.loop(-1); // keep playing the sound
} catch(Exception exc) {
System.out.println(exc);
}
}
}
このコードは出力サウンド スレッドを動作させますが、何も再生しません。このコードでは、サウンドを再生するための別のスレッドを開始しました。プログラムは、サウンド スレッドがジョブを終了するまで終了しないでください。ただし、一連のサウンド スレッドの動作を出力した後、プログラムは終了します。
これの理由は何ですか(プログラムが終了し、サウンドが再生されないため)?