導航:首頁 > 編程語言 > tcp多線程java

tcp多線程java

發布時間:2023-07-30 17:08:40

㈠ TCP多線程異常報錯java.net.ConnectException: Connection refused: connect

看下對應埠的服務,有並發量的限制吧

㈡ java socket 多線程通信 ,用測試工具連接不上

是不是輸出緩沖區的問題?多路復用的Socket?是不是無阻塞的?
我猜可能有兩個原因版: 1,如果不權是無阻塞的Socket,SocketServer正在響應一個另外的客戶端,這是測試工具發送的數據可能是發送過去了但是被阻塞在了緩沖區中。用測試工具的時候你的客戶端停止了么?
2,可能也就是SocketServer字元串輸出緩沖區問題,有時候在做網路通訊的時候,在一些IDE集成開發環境里,你不去顯示的在System.out.println()裡面的字元串結尾加"\n"的話,這寫字元串就一直在緩沖區中,等應用程序退出了,或者接收端線程停止的時候,緩沖區中得內容才會顯示出來。你在測試工具里發送的時候手動加個換行試試。
你用網路助手確認一下你的數據有沒有被發送出去,如果沒有發送出去可能是地址:埠問題。

㈢ java多線程詳細理解

㈣ 如何用Java編寫多線程

//兩種方式

{
publicvoidrun(){
System.out.println("線程"+Thread.currentThread().getName());
}
publicstaticvoidmain(String[]args){
ThreadDemot1=newThreadDemo();//創建線程
t1.start();//啟動線程

//創建第二個線程
ThreadDemot2=newThreadDemo();//創建線程
t2.start();//啟動線程
}
}

//方式二,實現Runnable介面

{
publicvoidrun(){
System.out.println("線程"+Thread.currentThread().getName());
}
publicstaticvoidmain(String[]args){
//創建線程實例
ThreadDemotd=newThreadDemo()
//創建線程1
Threadt1=newThread(td);
t1.start();
//創建線程2
Threadt2=newThread(td);
t2.start();
}
}

㈤ 初學Java多線程:使用Synchronized塊同步方法

synchronized關鍵字有兩種用法 第一種就是在《使用Synchronized關鍵字同步類方法》一文中所介紹的直接用在方法的定義中 另外一種就是synchronized塊 我們不僅可以通過synchronized塊來同步一個對象變數 也可以使用synchronized塊來同步類中的靜態方法和非靜態方法

synchronized塊的語法如下

public void method()

{

… …

synchronized(表達式)

{

… …

}

}

一 非靜態類方法的同步

從《使用Synchronized關鍵字同步類方法》一文中我們知道使用synchronized關鍵字來定義方法就會鎖定類中所有使用synchronzied關鍵字定義的靜態方法或非靜態方法 但這並不好理解 而如果使用synchronized塊來達到同樣的效果 就不難理解為什麼會產生這種效果了 如果想使用synchronized塊來鎖定類中所有的同步非靜態方法 需要使用this做為synchronized塊的參數傳入synchronized塊國 代碼如下

通過synchronized塊同步非靜態方法

public class SyncBlock

{

public void method ()

{

synchronized(this) // 相當於對method 方法使用synchronized關鍵字

{

… …

}

}

public void method ()

{

synchronized(this) // 相當於對method 方法使用synchronized關鍵字

{

… …

}

}

public synchronized void method ()

{

… …

}

}

在上面的代碼中的method 和method 方法中使用了synchronized塊 而第 行的method 方法仍然使用synchronized關鍵字來定義方法 在使用同一個SyncBlock類實例時 這三個方法只要有一個正在執行 其他兩個方法就會因未獲得同步鎖而被阻塞 在使用synchronized塊時要想達到和synchronized關鍵字同樣的效果 必須將所有的代碼都寫在synchronized塊中 否則 將無法使當前方法中的所有代碼和其他的方法同步

除了使用this做為synchronized塊的參數外 還可以使用SyncBlock this作為synchronized塊的參數來達到同樣的效果

在內類(InnerClass)的方法中使用synchronized塊來時 this只表示內類 和外類(OuterClass)沒有關系 但內類的非靜態方法可以和外類的非靜態方法同步 如在內類InnerClass中加一個method 方法 並使method 方法和SyncBlock的三個方法同步 代碼如下

使內類的非靜態方法和外類的非靜態方法同步

public class SyncBlock

{

… …

class InnerClass

{

public void method ()

{

synchronized(SyncBlock this)

{

… …

}

}

}

… …

}

在上面SyncBlock類的新版本中 InnerClass類的method 方法和SyncBlock類的其他三個方法同步 因此 method method method 和method 四個方法在同一時間只能有一個方法執行

Synchronized塊不管是正常執行完 還是因為程序出錯而異常退出synchronized塊 當前的synchronized塊所持有的同步鎖都會自動釋放 因此 在使用synchronized塊時不必擔心同步鎖的釋放問題

二 靜態類方法的同步

由於在調用靜態方法時 對象實例不一定被創建 因此 就不能使用this來同步靜態方法 而必須使用Class對象來同步靜態方法 代碼如下

通過synchronized塊同步靜態方法

public class StaticSyncBlock

{

public static void method ()

{

synchronized(StaticSyncBlock class)

{

… …

}

}

public static synchronized void method ()

{

… …

}

}

在同步靜態方法時可以使用類的靜態欄位class來得到Class對象 在上例中method 和method 方法同時只能有一個方法執行 除了使用class欄位得到Class對象外 還可以使用實例的getClass方法來得到Class對象 上例中的代碼可以修改如下

使用getClass方法得到Class對象

public class StaticSyncBlock

{

public static StaticSyncBlock instance;

public StaticSyncBlock()

{

instance = this;

}

public static void method ()

{

synchronized(instance getClass())

{

}

}

}

在上面代碼中通過一個public的靜態instance得到一個StaticSyncBlock類的實例 並通過這個實例的getClass方法得到了Class對象(一個類的所有實例通過getClass方法得到的都是同一個Class對象 因此 調用任何一個實例的getClass方法都可以) 我們還可以通過Class對象使不同類的靜態方法同步 如Test類的靜態方法method和StaticSyncBlock類的兩個靜態方法同步 代碼如下

Test類的method方法和StaticSyncBlock類的method method 方法同步

public class Test

{

public static void method()

{

synchronized(StaticSyncBlock class)

{

}

}

}

lishixin/Article/program/Java/gj/201311/27374

閱讀全文

與tcp多線程java相關的資料

熱點內容
圓弧刀東槽如何編程 瀏覽:870
js怎麼單擊改變標簽里的文字 瀏覽:760
實例配置文件里的sid是什麼 瀏覽:43
ps文件模糊 瀏覽:192
葉檀財經推出過什麼購物APP 瀏覽:875
linux硬碟檢測 瀏覽:431
如何用路由器降低網路延遲 瀏覽:601
aix分區root密碼 瀏覽:439
運動鞋買鞋上什麼app 瀏覽:904
NSA工具下載 瀏覽:918
函數代碼在哪個文件夾 瀏覽:213
微信應用怎麼代碼添加快捷方式 瀏覽:371
用數據說話是最有力的什麼 瀏覽:27
圖片文件被鎖定無法打開 瀏覽:768
wr886nv2升級 瀏覽:490
移動硬碟視頻文件無法刪除 瀏覽:417
如何查看網路監控 瀏覽:132
列印機如何連接到網路列印機 瀏覽:181
vmlinux安裝tools 瀏覽:768
波形文件轉mp3 瀏覽:803

友情鏈接