999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java多線程技術在網絡通信系統中的應用

2019-12-04 04:16:01盛琳陽盛芳圓
數字技術與應用 2019年8期

盛琳陽 盛芳圓

摘要:多線程技術是Java高級程序語言解決并發處理問題的解決方案,被廣泛應用于具有網絡通信功能的軟件開發工作。本文分析了線程之間通信的原理,介紹了Java多線程技術實現網絡通信的原理,指出了Java多線程技術實現線程安全及同步控制的有效途徑,提出了基于Java多線程技術的網絡通信系統實現方法改進方案。

關鍵詞:Java高級程序語言;多線程技術;網絡通信系統

中圖分類號:TP311 文獻標識碼:A 文章編號:1007-9416(2019)08-0108-01

1 線程之間通信的原理

軟件程序進行資源分配和調度的基本單位被稱為進程,進程中一個單一順序的控制流被稱為線程,線程是操作系統能夠進行運算調度的最小單位。進程與線程之間的區別就在于進程有獨立的存儲空間,而線程之間要共享同一個存儲空間。一個軟件程序在運行時需要有多個線程同時存在,則稱其具有多線程特性。在多線程場景下各線程共享CPU和內存,會出現線程的資源使用和存儲空間沖突的情況,如線程同步問題、線程牽制問題等。

多線程技術對線程的管理,就是讓線程之間共享資源,通過程序干預來控制線程的執行,在必要時刻還要干擾線程獲取資源來實現系統的共享資源異步訪問機制。多線程實現了線程的資源異步訪問,也實現了線程之間的通信和執行排序任務。

2 Java多線程技術實現網絡通信的原理

網絡通信系統一般分為服務器和客戶端兩個組件。早期的服務器端口只能和一個客戶端進行通信,當前一個通信未完成時后續訪問都處于等待狀態,只有關閉端口重新連接才能進行新的線程通信。隨著程序設計語言的不斷發展和網絡環境的不斷優化,網絡通信系統都具備了多服務器和多客戶端相互訪問的能力。在解決網絡通信問題時就需要多線程技術的支持。

Java的多線程技術支持線程共享存儲空間的機制,并且實現了不同線程之間的信息同步與交流,即網絡通信。Java語言處理多線程問題的步驟如下:(1)對處理多線程的條件指令進行校驗判斷,只有在校驗通過的情況下才可以讓后續的線程繼續執行;(2)當某一個線程指令完成后,要通知條件指令進行二次校驗,滿足條件后讓其他線程繼續執行;(3)執行上述兩個步驟,讓線程不斷循環執行下去,實現了不間斷的網絡通信功能。

3 Java多線程技術實現線程安全及同步控制

多線程編程會遇到最大的挑戰就是線程安全和同步控制問題。線程安全是指線程并行執行時出現的數據和執行問題,比如線程A在進行集合的遍歷查詢,線程B則在進行集合的清空操作,這兩個線程A和B如果同時進行會出現問題,誰先執行也會對對方的正常執行造成影響。同步控制是指在線程A操作數據時通知其他線程無法獲得當前數據,只有線程A完成后其它線程才可以進行訪問。Java多線程技術實現線程安全及同步控制的和新方法有synchronized同步鎖、wait/notify等待/通知機制、信號量機制等。(1)synchronized 同步鎖。Java使用synchronized關鍵字來實現線程同步鎖機制,線程可以使用synchronized來申請資源鎖定,別的線程在訪問帶有synchronized關鍵字的資源時就會自動進入等待狀態。當持有synchronized鎖的線程完成操作后,可以釋放同步鎖讓其他線程繼續訪問系統資源。(2)wait/notify等待/通知機制。在處理線程數量較大,彼此之間頻繁通信的多線程場景下,可以使用喚醒等待機制來實現網絡通信功能。Java中的wait/notify2個方法就實現了線程的等待通知機制。wait/notify指令要在synchronized 同步鎖的基礎上執行。對于獲得synchronized 同步鎖的線程,如果在執行過程中需要等待,可以調用wait方法來進入堵塞隊列,與此同時synchronized 鎖也會失效,其他線程開始獲得同步鎖進行處理,處理完成后調用notify方法來歸還synchronized 同步鎖。當堵塞隊列中有較多線程排隊時,調用了notify方法的線程會隨機通知一個等待線程進行激活,也可以調用notifyAll方法來通知所有等待的線程,得到通知的線程會進入就緒隊列進行后續處理。

4 Java多線程實現通信編程

Socket是Java多線程技術的主要類實現,網絡通信編程又稱為Socket編程。Socket編程基于TCP網絡西醫,分別實現服務器和客戶端。調用ServerSocket來構建服務器線程,為服務器設置固定的IP和端口號;多個客戶端程序可以借助Socket實現與服務器的通信和交互,連接結束后服務器還會創建一個Socket對象來記錄該次連接。Java多線程實現通信編程的過程如下:(1)網絡通信系統服務器端實現。創建服務對象ServerSocket創建服務器對象,讓服務器線程等待客戶端請求,并返回一個代表本次連接的Socket對象。ServerSocket對象的主要方法有:新建對象,讓更多的連接進行定義;按照一定規則構建數據交換機制,記錄各個線程的輸入輸出情況;關閉連接和其他系統資源。(2)網絡通信系統客戶端實現。服務器端進入等待狀態后,可以初始化Socket對象來向服務器端發送請求連接申請,獲得申請許可后則按照一定規則進行數據交互,完成連接和操作后也要進行客戶端的連接關閉實現。

5 Java多線程實現網絡通信系統的改進思路

傳統的網絡通信系統的服務器程序只能完成一次讀取操作,當Socket對象生成并完成請求應答后,在進行后續請求就要斷開重連,否則就會對系統服務器造成較大性能影響。為了解決這一問題,可以使用無限循環語句while(true)來實現服務器端的反復進行,但由于程序完成一次信息讀取后就會進入等待狀態,再使用無限循環語句也不會有什么實際的意義。為了解決無限循環鎖死的問題,使用現成技術手段讓服務器在循環內讀取Socket信息。具體方法就是在服務器結構中加入內部類ReadMessageThread,實現多客戶端訪問服務器的安全和同步管控。

主站蜘蛛池模板: 精品国产毛片| 久久久久久久久亚洲精品| 五月婷婷激情四射| 亚洲VA中文字幕| 亚洲第一页在线观看| 一本大道无码高清| 天天躁狠狠躁| 日本成人精品视频| 国产精品成人观看视频国产| 精品91视频| 国产精品露脸视频| 中文字幕亚洲电影| 亚洲av无码专区久久蜜芽| 亚洲第一色视频| 亚洲中文无码h在线观看| 久久精品丝袜高跟鞋| 91口爆吞精国产对白第三集| 欧美天天干| 国产成人精品视频一区视频二区| 99国产精品一区二区| 五月婷婷精品| 色网在线视频| 免费一看一级毛片| 欧美性爱精品一区二区三区| 夜精品a一区二区三区| 日韩高清欧美| 精品成人免费自拍视频| 99精品在线看| 99久久国产精品无码| 最新国产麻豆aⅴ精品无| 亚洲三级视频在线观看| 日韩欧美中文字幕在线精品| 国产中文一区a级毛片视频| 国产jizz| 国产精品久久久久久久伊一| 国产又粗又猛又爽视频| 国产欧美亚洲精品第3页在线| 美女免费黄网站| 72种姿势欧美久久久久大黄蕉| 波多野结衣的av一区二区三区| 亚洲精品无码日韩国产不卡| 日本不卡免费高清视频| 欧美国产视频| 欧美国产日韩在线播放| 久久精品丝袜高跟鞋| 久草热视频在线| 日韩av无码精品专区| 91美女视频在线观看| 国产日韩精品欧美一区灰| 国产乱子伦精品视频| 四虎影视库国产精品一区| 国产69精品久久久久孕妇大杂乱| 99热国产这里只有精品无卡顿"| 久久综合九色综合97婷婷| 亚洲无码高清视频在线观看| 99热最新网址| 中文成人在线| 亚洲另类第一页| AV片亚洲国产男人的天堂| 四虎成人免费毛片| 国产一区二区免费播放| 国产一二三区视频| 高潮爽到爆的喷水女主播视频| 国产91熟女高潮一区二区| 黄色三级网站免费| 99偷拍视频精品一区二区| 91免费观看视频| 色天天综合久久久久综合片| 亚洲全网成人资源在线观看| 无遮挡一级毛片呦女视频| 热99精品视频| 亚欧乱色视频网站大全| 国产爽妇精品| 成人午夜视频免费看欧美| 欧美亚洲国产一区| 91精品最新国内在线播放| 天堂岛国av无码免费无禁网站| 91精品久久久久久无码人妻| 免费高清毛片| 国产精品成人观看视频国产 | 激情无码字幕综合| 国产精品亚洲精品爽爽|