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. */  

相关内容