程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> java-菜鳥求問Java關於線程的問題!!

java-菜鳥求問Java關於線程的問題!!

編輯:編程綜合問答
菜鳥求問Java關於線程的問題!!

問題是這樣的,嘗試開發一個窗體,在窗體內有兩個按鈕,一個start,一個stop,當點擊start按鈕時在控制台持續打印一句話,當用戶點擊stop按鈕時控制台打印結束。我的源代碼是這樣的,不知道哪裡出錯了,按下start以後就按不動stop了,求大神解答!

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Thread22 extends Frame {
Boolean flag = true;
Button b1;
Button b2;
public static void main(String[] args) {
new Thread22().F();
}

    public void F(){
        b1 = new Button("start");
        b2 = new Button("stop");

        add(b1, BorderLayout.NORTH);
        add(b2, BorderLayout.CENTER);
        new B1().start();
        new B2().start();
        pack();
        setVisible(true);
}

    class B1 extends Thread{

        public void run() {
            b1.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent e) {
                    while(flag){
                        System.out.println("start");
                    }
                }

            });
        }

    }

    class B2 extends Thread{

        public void run() {
            b2.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent e) {
                    flag = false;
                }

            });
        }

    }

}

最佳回答:


確實是線程阻塞,,你開始了一個線程綁定了b1點擊事件 綁定完了線程結束了 ,當你點擊執行的時候就不是線程在執行了是當前線程在執行.並且flag=true 所以當前線程永遠都在打印start

xinyu2880
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved