我已经使两个线程与Netbeans一起运行,并且我想添加三个按钮来停止暂停继续它们。它们突出显示并取消突出显示文本。其中一个代码是停止暂停继续两个同步线程
class TimeHighspell extends Thread{
int x=0;
int pos;
int delay;
Control control ;
String [] result;
int[] anArray;
public TimeHighspell (Control c, int delay,String [] result1,int pos,int[] anArray) {
x=0;
control = c;
this.delay = delay;
result=result1;
this.pos=pos;
this.anArray=anArray;
}
public void run(){
while (true) {
control.putHighspell(result,pos,x);
int Search=x+1;
Arrays.sort(anArray);
int index = Arrays.binarySearch(anArray,Search);
if (index > 0)
pos=pos+result[x].length()+1;
else
pos=pos+result[x].length();
x=x+1;
try {
Thread.sleep(delay);
}
catch (InterruptedException e) {}
}}}
class Control {
private boolean ping = false;
public synchronized void putHigh(String [] result,int pos,int x){
while(ping==false)
try{
//notify();
wait();
}catch(InterruptedException e){}
highlight(editPane, result[x],pos);
HighBold(editPane,result[x],pos);
ping = false;
notifyAll();
}
要启动它们,我使用AA按钮,在这里我把这个代码
private void HighWordActionPerformed(java.awt.event.ActionEvent evt) {
String [] result1 = editPane.getText().split("\\s");
Control c = new Control();
int delay;
int pos=0;
delay=Slider.getValue();
RemoveHigh p1 = new RemoveHigh(c, delay);
TimeHigh c1 = new TimeHigh(c, delay,result1,pos);
p1.start();
c1.start();}
哪里是你的按钮GUI代码? – Jivings 2012-01-31 20:56:08
只需使用两个volatile boolean字段:'stop'和'pause',并在'while(true)'块的开始处检查它们是否正确。 – 2012-01-31 20:58:51
我只是把其余的代码 – drew 2012-01-31 21:13:58