摘 要:本文系統介紹了Java多線程技術的關鍵環節,并且闡述了創建線程、調用線程以及線程同步和線程通信等,詳細說明了SOCKET套接字的概念和基本原理,并且通過并發服務器多用戶網絡的通信程序,詮釋了開發客戶機-服務器的多線程模式的通信程序的方法。
關鍵詞:Java;多線程;網絡通信;應用
1 Java簡介
Java最顯著的特征就是在語言中融合了多線程機制。線程指的就是一個程序中的執行流。多個線程可以同時存在于同一進程中。通過操作系統對這些線程并發執行調度,使得任一個線程都仿佛擁有整個獨自的系統資源。JAVA正是因為具有多線程的特性,所以能夠并發執行多個程序。程序開發人員利用多線程的JAVA編程接口,能夠開發出與多線程兼容的應用程序,從而一定程度上降低設計并發程序的難度,使程序執行具有更高的效率。
2 創建線程
創建線程一般有兩種途徑:一種是THREAD類繼承的方法創建線程類。RUN0子類重載,創建方法如下:
CLASS THREADNAME EXTENDS THRREAD{
PUBLIC VOID RUN(){//RUN 指的是線程整個類代碼的輸入端
…//代碼運行方式為線程方式
}}
另外一種創建方法是新建帶有RUNNABLE的類。因為JAVA不具有多繼承性,當運行方式類似線程并且由另外的類要繼承,就一定要具有RUNNABLE接口。RUN()是RUNNABLE接口的唯一實現方法。此接口在類中的實現方法為:
CLASS TH READNAME EXTENDS APPLET IMPLEMENTS
RUNNABLE{
PUBLIC VOID RUN(){
…
}}
3 調用線程
當用THREAD類繼承的方法創建線程類時,調用此線程類的方法為:
THREADNAME TEST=NEW THREADNAME();//TEST指的是線程類
THREADNAME的具體實例
TEST. START();
START()表示的是在在線程類中創建的成員函數。
當用新建帶有RUNNABLE的類的方法創建線程類時,調用此線程類的方法如下:
THREADNAME TEST=NEW TH READNAME();
THREAD TH=NEW THREAD(TEST);//新線程的創建為THREAD
TH.START();
4 線程通信與同步
當多個線程同時存在于同一系統中時,需要滿足各線程之間的相互同步及通信,這樣才能保證工作協調,防止死鎖的發生。
JAVA主要有3個WAIT()OBJECT標準類方法,NOTIFYALL()、NOTIFY(),還有就是3個THREAD[1]。
類方法RESUME()、SUSPEND()、以及SLEEP()的功能是喚醒或者中斷執行線程。當SUSPEND()、WAIT()以及sleep()被線程調用后,可運行狀態下的線程就會轉入BLOCKED阻塞狀態,只要線程的睡眠時間結束或者是RESUME()或NOTIFY()被另外線程調用,這個阻塞狀態下的線程才會轉入可運行狀態,系統線程是否能夠占用CPU,關鍵在于調度策略。
5 通訊機制SOCKET
TCP/IP協議的技術核心就是物理層、網絡層以及傳輸層,TCO/IP操作系統可是指能滿足這三層的協議內核。中下層的TCP/IP協議智能將初始的編程界面對外提供,不能直接提供用戶服務,提供用戶服務需要依靠核外設置的應用程序來完成[2]。
網間的應用程序對于TCP/IP協議所具有的編程界面可以直接進行操作。網間網針對TCP/IP協議的進程間主要的作用模型是CLIENT/SERVER客戶端/服務器模式。服務器和客戶端是兩個不同的進程,也就是應用程序,客戶發送請求服務給服務器,服務器就會相應響應。
網間網標識進程的唯一方法是三元組的形式,描述SOCKET用到HALF-SAAOCIATION半相關:
{協議名稱,地址,端口號}
五元組的形式表示完整的一個網間網通信進程。即SOCKET完整的描述形式為ASSOCIATION相關:
{協議名稱,本地址名稱,本端口號碼,遠程地址名稱,遠程端口號碼}
相同的兩個協議半相關構成合適的一個相關,兩個三元組能夠構成五元組。確定的SOCKET具有唯一確定的SOCKET號,這個號是操作系統提供的。SOCKET具有一致性的特點,可以對網絡進程進行準確描述。所以,構建服務器和客戶端的相關是SOCKET的重中之重。
SOCKET具有兩種通訊方式:無關聯和有關聯,針對的應用需求不同。有關聯的通訊方式提供了全雙工、可靠的字節流服務。通信雙方在有關聯的方式下需要創建聯接過程和通訊鏈路全部的網絡通信都在這個進程中完成,聯接過程在通信完畢后關閉。無關聯的通訊方式比有關聯時系統開銷相對較小,但是提供的數據報服務不可靠,數據從信息源發出不能夠保證到達信宿。通方式信雙方在無關聯方式下不必建立聯接過程以及通訊鏈路,由進程和主機轉發完成通信。
6 小結
系統運行和調度的最小單位是線程,本文系統介紹了JAVA多線程技術的實現方式,為實際的通信網絡程序的開發提供了一定的理論參考。
[參考文獻]
[1]王琳.Java多線程機制及其應用[J].武漢理工大學學報,2003,25(5): 38-43.
[2]李誠,等.Java 2簡明教程[M].北京:清華大學出版社,2004.