1. 程式人生 > >Java Swing 執行緒執行任務(不然介面一直處於不可點選狀態)

Java Swing 執行緒執行任務(不然介面一直處於不可點選狀態)

\

/**
 * 使用了執行緒中斷在swing進度條中的應用,在run()中呼叫JProgressBar的setValue()方法。
 * <p>
 * 本例應用了執行緒的中斷,2種中斷方法:
 * <ul>
 * <li>運用interrupt()方法</li>
 * <li>在run()中使用無限迴圈,然後用一個布林什標記去控制迴圈的停止</li>
 * </ul>
 * 另外,還有內部類與匿名內部類的分別使用。
 *
 * @author HAN
 *
 */ 
 
@SuppressWarnings("serial") 
public class ThreadAndSwing extends JFrame{ 
    static Thread thread; 
    JProgressBar progressBar; 
    public ThreadAndSwing(){ 
        progressBar=new JProgressBar(); 
        progressBar.setStringPainted(true); 
        Container container=getContentPane(); 
        container.add(progressBar, BorderLayout.NORTH);//在不指定佈局管理器的情況下,預設使用BorderLayout。 若不使用佈局管理器,需明確說明setLayout(new BorderLayout())  
         
        this.setTitle("執行緒中斷在Swing進度條的使用"); 
        this.pack(); 
        this.setVisible(true); 
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
         
        this.creatThread(); 
        thread.start(); 
//       thread_instance.setContinue(false); //另一種中斷執行緒方式  
        thread.interrupt(); 
    } 
     
    class Thread_instance implements Runnable{ 
        boolean isContinue=true; 
        public void setContinue(boolean b){ 
            this.isContinue=b; 
        } 
        @Override 
        public void run() { 
            // TODO Auto-generated method stub  
            int count=0; 
             
            while(true){ 
                progressBar.setValue(++count); 
                try { 
                    Thread.sleep(1000); 
                } catch (InterruptedException e) { 
                    // TODO Auto-generated catch block  
                    System.out.println("當前程式被中斷"); 
                    break; 
                } 
                if(!isContinue){ 
                    break; 
                } 
            } 
            System.out.println("here"); 
        } 
    } 
    void creatThread(){ 
        thread=new Thread(new Thread_instance()); 
    } 
    static void init(JFrame frame,int width,int height){ 
        frame.setSize(width,height); 
    } 
    public static void main (String[] args){ 
        init(new ThreadAndSwing(),300,100); 
    } 
} 


相關推薦

Java Swing 執行執行任務不然介面一直處於不可狀態

/** * 使用了執行緒中斷在swing進度條中的應用,在run()中呼叫JProgressBar的setValue()方法。 * <p> * 本例應用了執行緒的中斷,2種中斷方法: * <ul> * <li>運用interr

java執行執行同步synchronized不同步的問題、佇列與鎖,死鎖的產生和解決

# 0、不同步的問題 併發的執行緒不安全問題: 多個執行緒同時操作同一個物件,如果控制不好,就會產生問題,叫做執行緒不安全。 我們來看三個比較經典的案例來說明**執行緒不安全的問題**。 ## 0.1 訂票問題 例如前面說過的黃牛訂票問題,可能出現負數或相同。 [執行緒建立方式&&黃牛訂票

終止執行的方法不看後悔,看了必懂

在java語言中,可以使用stop()方法和suspend()方法來終止執行緒的執行. 當使用Thread.stop()來終止執行緒時,它會釋放已經鎖定的所有監視資源,具有不安全性 suspend()方法不會釋放鎖,容易發生死鎖(兩個或者兩個以上程序在執行過程中,因爭奪資源而造成程序間互

iOS多張圖片上傳多執行處理方法可獲取最後一張上傳狀態後的訊號

環境重現 1,服務端提供單張上傳的介面。 2,客戶端需求同時提交多張圖片上傳。 3,使用AFNetWorking 或 自封裝的帶有block回撥網路狀態的框架。 思路 1,建立一個管理類。 2,提供一個單例方法。保證管理類唯一 3,提供一個公共

NGUI之響應滑鼠事件劃過、停留、

一、不管什麼響應,必須要新增碰撞器(要注意的是NGUI要用自己的方法來新增碰撞器) 二、給需要響應的遊戲物件或者預設物體新增兩個指令碼UIEventListener 和UIEventOver,如圖 三、假設現在要響應滑鼠停留在物體和移走物體時候的兩種訊息 給物件新增指令碼

Kotlin系列二Kotlin實現RecyclerView加item處理

上一篇分享了kotlin基礎語法,這一篇分享kotlin在Android開發中的實際應用,希望對正在學習的小夥伴有幫助。 新增的依賴: /*RecyclerView*/ implementation 'com.android.support:recyclervi

Java定時任務Timer排程器【二】 多執行原始碼分析圖文版

  上一節通過一個小例子分析了Timer執行過程,牽涉的執行執行緒雖然只有兩個,但實際場景會比上面複雜一些。 首先通過一張簡單類圖(只列出簡單的依賴關係)看一下Timer暴露的介面。   為了演示Timer所暴露的介面,下面舉一個極端的例子(每一個介面方法面

java執行任務提交Runnable、Callable、FutureTask

任務的封裝與執行過程 (注:下面所說的Runnable物件,Callable物件都是指實現了該介面的類的物件) 之前要交給執行緒執行的任務我們都把它封裝在Runnable中。對於執行緒池而言,多了一種Callable的封裝方式。 Runnable:其中的run()方法沒有返回值。

java執行5.任務執行

將應用程式的工作分解到多個任務中,可以簡化程式的組織結構,提供一種自然的事務邊界來優化錯誤恢復過程,並提供一種自然的並行工作結構來提升併發性 理想情況下,能找出清晰的任務邊界,各個任務之間是相互獨立的,任務不依賴於其他任務的狀態、結果或邊界效應。 在正常的負載下,伺服器應用程式應該同時表現出良好

【小家Java】一次Java執行池誤用newFixedThreadPool引發的線上血案和總結

相關閱讀 【小家java】java5新特性(簡述十大新特性) 重要一躍 【小家java】java6新特性(簡述十大新特性) 雞肋升級 【小家java】java7新特性(簡述八大新特性) 不溫不火 【小家java】java8新特性(簡述十大新特性) 飽受讚譽 【小家java】java9

java執行學習總結

(宣告:並非原創,只是一個簡單總結) 一、執行緒和程序的概念:            程序:程序是處於執行過程中的程式,並且具有一定的對功能,是系統進行資源分配和排程的一個獨立單位。      

Java執行——執行優先順序與守護執行Daemon Thread

一、執行緒優先順序 每個執行緒都可以通過thread.setPriority()實現程序優先順序的設定。可設定的範圍在1-10之間,如果超過此範圍將丟擲異常throw new IllegalArgumentException()。每個執行緒的預設優先順序為5。 tips:即使將某個執行緒的優

java:多執行的基礎引入

* 1.什麼是執行緒     * 執行緒是程式執行的一條路徑, 一個程序中可以包含多條執行緒     * 多執行緒併發執行可以提高程式的效率, 可以同時完成多項工作* 2.多執行緒的應用場景     * 紅

java執行快速入門

通過匿名內部類的方法建立多執行緒 package com.cppdy; //通過匿名內部類的方法建立多執行緒 public class ThreadDemo2 { public static void main(String[] args) { new Thread(ne

java執行快速入門

多執行緒應用例項(批量傳送簡訊) 1、建立實體類 package com.cppdy; public class UserEntity { private int id; private String name; public int g

java執行快速入門

什麼是守護執行緒   守護執行緒是為使用者執行緒服務的這麼一個執行緒,主執行緒結束,守護執行緒也結束 package com.cppdy; class MyThread3 extends Thread{ @Override public void run() {

java執行快速入門

設定執行緒優先順序:join() package com.cppdy; class MyThreadA extends Thread{ MyThreadB b; public MyThreadA(MyThreadB b) { this.b=b; }

java執行快速入門

多執行緒安全問題(賣火車票案例) package com.cppdy; class MyThread5 implements Runnable{ private Integer ticketCount=100; @Override public void run() {

java執行快速入門十一

在方法上面加synchonizd用的是this鎖 package com.cppdy; class MyThread7 implements Runnable { private Integer ticketCount = 100; public boolean falg = tr

java執行快速入門十二

在靜態方法上面加synchonizd用的是位元組碼檔案鎖 package com.cppdy; class MyThread8 implements Runnable { private static Integer ticketCount = 100; public boolea