簡體   English   中英

使線程從jbutton開始的最佳方法?

[英]Best way to make a thread start from a jbutton?

我有15個不同的線程,它們全部通過用戶的動態輸入運行。 我只在按下JButton時才需要運行這些線程。 我知道我沒有提供按鈕的代碼,但它只是一個簡單的減速。

JButton JButton_Button1 = new JButton("Start");

為了澄清更多時間,我只希望僅在單擊JButton_Button1啟動線程

new Thread() {
        int counter = 10;
        public void run() {
            while(counter >= 0) {
                JLabel_MistyvaleLoot.setText("Test" + (counter--));
                try{
                    Thread.sleep(1000);
                } catch(Exception e) {}
            }
        }
    }.start();

如果您希望運行15個線程,但是除了按下JButton之外,他們不希望它們執行任何操作,請考慮使用固定大小的線程池。 嘗試使用:

private ExecutorService threadPool = Executors.newFixedThreadPool(15);

這將構造15個處理線程,這些線程將一直閑置,直到您提交任務為止。 如果希望在按下JButton時提交任務,則應該添加一個ActionListener 也就是說,嘗試以下操作:

JButton jButton1 = new JButton("Start");
jButton1.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent event){
        threadPool.submit(new Runnable(){
            int counter = 10;
            public void run() {
                while(counter >= 0) {
                    JLabel_MistyvaleLoot.setText("Test" + (counter--));
                    try {
                        Thread.sleep(1000);
                    } catch(InterruptedException e) {

                    }
               }
            }
        });
    }
});

要獲取運行任務的十五個線程之一,請調用threadPool.submit()並獲取按鈕以響應單擊,請調用jButton1.addActionListener()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM