【例 12-10】如果声音文件较大或网络速度慢会影响小程序的初始化工作。这可用多线程技术解决。在一个级别较低的线程中完成音频对象的创建,即由后台载入声音文件,前台播放。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Hanoi extends applet implements Runnable, ActionListener{ AudioClip clip; //声明一个音频对象 textField text; Thread thread; Button buttonPlay, buttonLoop, buttonStop; public void init(){ thread = new Thread(this); //创建新线程 thread .setPriority(Thread.MIN_PRIORITY); buttonPlay = new Button("开始播放"); buttonLoop = new Button( "循环播放"); buttonStop = new Button("停止播放"); text = new textField(12); buttonPlay.addActionListener(this); buttonStop.addActionListener(this); buttonLoop.addActionListener(this); add(buttonPlay); add(buttonLoop); add(buttonStop); add(text); } public void start(){ thread.start(); } public void stop(){ clip.stop(); } public void actionPerformed(ActionEvent e){ if (e.getSource() == buttonPlay(){ clip.play(); } else if (e.getSource() == buttonLoop(){ clip.loop(); } else if (e.getSource() == buttonStop(){ clip.stop(); } } public void run(){ //在线程thread 中创建音频对象 clip = getAudioclip(getCodeBase(), "2.wav"); text.setText("请稍等"); if(clip ! = null){ buttonPlay.setBackground(Color.red); buttonLoop.setBackground(Color.green); text.setText("您可以播放了"); } //获得音频对象后通知可以播放 } }