public void run() {
try {
synchronized(this){
while (true) {
if (flag) {
textField.setText("begin!");
i=0;
Matcher matcher = pattern.matcher(sourcehtml.srccode);
while(matcher.find()){
Thread.sleep(500);
if (flag) {
// textField.setText(textField.getText() + i++);
textField.setText(matcher.group()+"\n"+textField.getText());
} if (!todoflag){break;}
} flag=false;
// textField.setText(textField.getText() + (int) (Math.random() * 100));
// textField.setText(i+"\n"+textField.getText());
// textField.paintImmediately(textField.getBounds());
}
Thread.sleep(500);// 停半秒
}
}} catch (InterruptedException e) {
e.printStackTrace();
}
}
这是我控制的一个输出正则匹配结果的类中的方法. 当我执行我的程序的时候我的主线程处于循环状态中.但由于flag是false所以没运行..
当我用另外一个线程改变flag变成ture 程序开始运行
然后flag改变为false后 我再变为true
为什么代码是从上次运行的结果继续往后执行?而不是从新开始?
------解决方案--------------------