国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java線程使用入門

2019-11-18 15:45:56
字體:
來源:轉載
供稿:網友

  java平臺從開始就被設計成為多線程環境。在你的主程序執行的時候,其它作業如碎片收集和事件處理則是在后臺進行的。本質上,你可以認為這些作業是線程。它們正好是系統治理線程,但是無論如何,它們是線程。線程使你能夠定義相互獨立的作業,彼此之間互不干擾。

系統將交換這些作業進或出CPU,這樣(從外部看來)它們好象是同時運行的。

  在你需要在你的程序中處理多個作業時,你也可以使用多個進程。這些進程可以是你自己創建的,你也可以操縱系統線程。

  你進行這些多作業處理,要使用幾個不同的類或接口:

   java.util.Timer類
   javax.swing.Timer類
   Thread類
   Runnable接口

  對于簡單的作業,通常需要重復的,你可以使用java.util.Timer類告訴它“每半秒鐘做一次”。注重:大多數系統例程是使用毫秒的。半秒鐘是500毫秒。

  你希望Timer實現的任務是在java.util.TimerTask實例中定義的,其中運行的方法包含要執行的任務。這些在Hi類中進行了演示,其中字符串“Hi”重復地被顯示在屏幕上,直到你按Enter鍵。

import java.util.*;

public class Hi {
 public static void main(String args[])
 throws java.io.IOException {
  TimerTask task = new TimerTask() {
  public void run() {
   System.out.  }
 };
 Timer timer = new Timer();
 timer.schedule(task, 0, 500);
 System.out.println("Press ENTER to stop");
 System.in.read(new byte[10]);
 timer.cancel();
}
}
  Java Runtime Environment工作的方式是只要有一個線程在運行,程序就不退出。這樣,當取消被調用,沒有其它線程在運行了,則程序退出。有一些系統線程在運行,如碎片收集程序。這些系統線程也被稱為后臺線程。后臺線程的存在不影響運行環境被關閉,只有非后臺線程保證運行環境不被關閉。

  Javax.swing.Timer類與java.util.timer類的工作方式相似,但是有一些差別需要注重。第一,運行的作業被ActionListener接口的實現來定義。第二,作業的執行是在事件處理線程內部進行的,而不象java.util.Timer類是在它的外部。這是很重要的,因為它關系到Swing
組件集是如何設計的。

  假如你不熟悉Swing,它是一組可以被Java程序使用的圖形組件。Swing被設計程被稱為單線程的。這意味著對Swing類內部內容的訪問必須在單個線程中完成。這個特定的線程是事件處理線程。這樣,例如你想改變Label組件的文字,你不能僅僅調用Jlabel的setText方法。相反,你必須確認setText調用發生在事件處理線程中,而這正是javax.swing.Time類派的上用場的地方。

  為了說明這第二種情況,下面的程序顯示一個增加的計數器的值。美半秒鐘計數器的數值增加,并且新的數值被顯示。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Count {
 public static void main(String args[]) {
  JFrame frame = new JFrame();
  frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
  Container contentPane = frame.getContentPane();
  final JLabel label = new JLabel("", JLabel.CENTER);
  label.setFont(new Font("Serif", Font.PLAIN, 36));
  contentPane.add(label, BorderLayout.CENTER);
  ActionListener listener = new ActionListener() {
   int count = 0;
   public void actionPerformed(ActionEvent e) {
    count++;
    label.setText(Integer.toString(count));
   }
  };
  Timer timer = new Timer(500, listener);
  timer.start();
  frame.setSize(300, 100);
  frame.show();
 }
}
  上述程序的結果是:

Java線程使用入門(圖一)

  萬一你要做的不是一個簡單的重復作業,java.lang.Thread類就派上了用場。它答應你自己控制基本功能。通過創建Thread的一個子類,你可以使你的系統脫離,并進行一個長時間運行的作業,如從網絡上讀取一個文件,而不阻礙你的其它程序的運行。這種長時間運行的作業將在run方法中定義。
  第二種方式是創建Thread類的子類并在子類中實現run方法,或在實現runnable的類中實現run方法,并將這個實現傳遞給Thread的構造函數。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苏州市| 滦平县| 博客| 新余市| 荥经县| 怀远县| 简阳市| 霍城县| 巩留县| 榕江县| 延寿县| 万安县| 从化市| 霍邱县| 甘南县| 满洲里市| 南和县| 阳高县| 广丰县| 孟村| 郎溪县| 工布江达县| 土默特右旗| 马鞍山市| 湖南省| 上饶市| 宝丰县| 永和县| 南雄市| 东乡县| 桂林市| 上杭县| 兰州市| 黔西县| 宣威市| 同心县| 湖州市| 红河县| 长子县| 若尔盖县| 柏乡县|