java多线程编程的问题
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  
为什么代码是从上次运行的结果继续往后执行?而不是从新开始?
------解决方案--------------------