麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

Java程序開發中如何應用線程

2024-07-14 08:44:03
字體:
來源:轉載
供稿:網友

  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);
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)
{
final string urlstring = args;
final string message = args;
thread thread1 = new thread()
{
public void run()
{
try
{
url url = new url(urlstring);
urlconnection connection =
url.openconnection();
inputstreamreader isr = new
inputstreamreader(
connection.getinputstream());
bufferedreader reader =
new bufferedreader(isr);
int count = 0;
while (reader.read() != -1)
{
count++;
}
system.out.println("size is : "+ count);
reader.close();
} catch (malformedurlexception e)
{
system.err.println("bad url: "
+ urlstring);
} catch (ioexception e)
{
system.err.println
("i/o problems");
}
}
};
thread1.start();
runnable runnable = new runnable()
{
public void run()
{
while(true)
{
system.out.println(message);
try
{
thread.sleep(500);
} catch (interruptedexception e)
{
}
}
}
};
thread thread2 = new thread(runnable);
thread2.start();
try {
system.out.println
("press enter to stop");
system.in.read(new byte);
} catch (ioexception e)
{
system.out.println("i/o problems");
}
system.exit(0);
}
}

因為有多種方式來處理線程,你選用哪種技術取決于你和你面臨的條件。要成為一個有效的java編程人員,盡管你通常不必學習java編程語言的所有內容和核心庫,但是線程是一個例外。你越早了解線程如何工作和如何使用線程,你將越早了解java程序如何工作和交互。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲国产精品久久久久久久 | 久久靖品 | 草b视频在线观看 | 国产女王女m视频vk 中文日韩 | 黄色免费小网站 | 欧美一级免费高清 | 性欧美日本 | 久久精品日产高清版的功能介绍 | 亚洲九草 | 欧美一级淫片a免费播放口 91九色蝌蚪国产 | 欧美一级淫片007 | 黄污免费网站 | 国内自拍网址 | 看91 | 激情夜色| 亚洲国产网站 | 精品成人免费一区二区在线播放 | 国产99视频精品免视看9 | 国产精品一区二区手机在线观看 | 成人在线网站 | 蜜桃传媒视频麻豆第一区免费观看 | 1314成人网| 亚洲第一成av人网站懂色 | 日韩黄色免费在线观看 | 亚洲精久| 久久丝袜脚交足黄网站免费 | 日韩黄色片免费看 | 在线看91 | 美国一级黄色毛片 | 久久精品视频1 | 国产精品久久久久久久久久久久久久久 | 韩国一级免费视频 | 高清视频91 | 欧美激情第一区 | 鲁丝一区二区三区不属 | 美女久久久久久久久 | 巨乳激情| 小视频免费在线观看 | 成人免费在线播放 | 久久久久91视频 | 国产分类视频 |