歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

JAVA線程的應用實例

JAVA線程的應用實例(運用2種中斷線程方式,基於實現進度條為例)

Java內置了對多線程的支持,那些在其他語言中必須由手工完成的工作,現在都可以由Java自動處理。我們進入多線程就像進入了一個全新的領域,因為它的編程思想打破了傳統,傳統的程序代碼一般都是從上到下一條一條的執行的,而多線程允許多個代碼塊並行執行。所以多線程編程模式可以更好的模擬現實世界的應用。可以說,java對多線程的內置支持是對傳統的計算機編程領域的一次突破貢獻。我們不應該去抵制它,而是更好的去熟悉和利用它。
C++沒有對多線程編程提供內置支持,於是就必須依賴於操作系統來處理多線程任務。這就意味著創建、啟動、同步和結束線程都必須通過對操作系統的多次調用來實現。因此C++中的多線程代碼是不可移植的。這也使得C++編程中的多線程沒有得以廣泛應用。
  1. package com.han;  
  2.   
  3. import java.awt.*;  
  4. import javax.swing.*;  
  5. /** 
  6.  * 內部類與匿名內部類的分別使用,並且分別運用了interrupt()方法和在run()中使用無限循環,然後用一個布爾什標記去控制循環的停止 
  7.  * @author HAN 
  8.  * 
  9.  */  
  10.   
  11. @SuppressWarnings("serial")  
  12. public class Thread_interrupt extends JFrame{  
  13.     static Thread thread;  
  14.     JProgressBar progressBar;  
  15.     public Thread_interrupt(){  
  16.         progressBar=new JProgressBar();  
  17.         progressBar.setStringPainted(true);  
  18.         Container container=getContentPane();  
  19.         container.add(progressBar, BorderLayout.NORTH);//在不指定布局管理器的情況下,默認使用BorderLayout。 若不使用布局管理器,需明確說明setLayout(new BorderLayout())   
  20.           
  21.         this.pack();  
  22.         this.setVisible(true);  
  23.         this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  
  24.           
  25.         this.creatThread();  
  26.         thread.start();  
  27.         //thread_instance.setContinue(false); //另一種中斷線程方式   
  28.         thread.interrupt();  
  29.     }  
  30.       
  31.     class Thread_instance implements Runnable{  
  32.         boolean isContinue=true;  
  33.         public void setContinue(boolean b){  
  34.             this.isContinue=b;  
  35.         }  
  36.         @Override  
  37.         public void run() {  
  38.             // TODO Auto-generated method stub   
  39.             int count=0;  
  40.               
  41.             while(true){  
  42.                 progressBar.setValue(++count);  
  43.                 try {  
  44.                     Thread.sleep(1000);  
  45.                 } catch (InterruptedException e) {  
  46.                     // TODO Auto-generated catch block   
  47.                     System.out.println("當前程序被中斷");  
  48.                     break;  
  49.                 }  
  50.                 if(!isContinue){  
  51.                     break;  
  52.                 }  
  53.             }  
  54.             System.out.println("here");  
  55.         }  
  56.     }  
  57.     void creatThread(){  
  58.         thread=new Thread(new Thread_instance());  
  59.     }  
  60.     static void init(JFrame frame,int width,int height){  
  61.         frame.setSize(width,height);  
  62.     }  
  63.     public static void main (String[] args){  
  64.         init(new Thread_interrupt(),100,100);  
  65.     }  
  66. }  
  67.   
  68. /*@SuppressWarnings("serial") 
  69. public class Thread_interrupt extends JFrame{ 
  70.     Thread thread; 
  71.     JProgressBar progressBar; 
  72.     boolean isContinue=true; 
  73.     public Thread_interrupt(){ 
  74.         progressBar=new JProgressBar(); 
  75.         progressBar.setStringPainted(true); 
  76.         Container container=getContentPane(); 
  77.         container.add(progressBar); 
  78.         this.pack(); 
  79.         this.setVisible(true); 
  80.         this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
  81.         thread=new Thread(new Runnable(){    
  82.             public void run() { 
  83.                 // TODO Auto-generated method stub 
  84.                 int count=0; 
  85.  
  86.                 while(true){ 
  87.                     progressBar.setValue(++count); 
  88.                     try { 
  89.                         Thread.sleep(1000); 
  90.                     } catch (InterruptedException e) { 
  91.                         // TODO Auto-generated catch block 
  92.                         System.out.println("當前程序被中斷"); 
  93.                         break; 
  94.                     } 
  95.                     if(!isContinue){ 
  96.                         break; 
  97.                     } 
  98.                 } 
  99.                 System.out.println("here"); 
  100.             } 
  101.         }); 
  102.         thread.start(); 
  103. //      thread.interrupt(); 
  104.         setContinue(false); 
  105.     } 
  106.     *//** 
  107.      * @param b true=continue to execute run();  
  108.      *          false=stop to execute run() 
  109.      *//* 
  110.     private void setContinue(boolean b) { 
  111.         // TODO Auto-generated method stub 
  112.         this.isContinue=b; 
  113.     } 
  114.     public static void main (String[] args){ 
  115.         new Thread_interrupt();  
  116.     } 
  117. } 
  118. */  
Copyright © Linux教程網 All Rights Reserved