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

javahttp多線程

發布時間:2025-04-05 11:38:37

java的多線程有什麼用處

java的多線程一般用於網路層
簡單的理解,你訪問網站的時候肯定有過一次開很多個網頁,然後再去一個個看,這個就是多線程的類似原理。
單線程可以理解為你每次只開一個網頁,要看其他網頁的時候先關了原來的網頁後才去訪問一個新網頁。
單線程的缺點是順序執行,只有一個結束了,下一個才會執行,如果網路阻塞等原因,程序會一直等待返回信息而什麼都不去做了,這樣就造成了效率的降低。
多線程會分段分步執行,如果一個線程卡死在網路上面(也就是打不開網頁的情況),他不會一直等待,會先執行其他的訪問,然後再回來看一下卡死的線程是否能繼續,如果設置了超時會報錯然後釋放那個線程。

Ⅱ java多線程開多少上限量。

1。java的線程開啟,默認的虛擬機會分配1M的內存,但是在4G的windows上線程最多也就開到300多 ,是因為windows本身的一些限制導致。

2。虛擬機給每個線程分配的內存(棧空間)是由虛擬機參數-Xss來指定的,在不同平台上對應的默認大小可以 在oracle的官方文檔上查詢到:
http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman /optionX.html
其中,Linux64位默認Xss值為256K,並非1M或10M

3。一個Java進程可以啟動的線程數可以通過如下公式計算:

(系統剩餘內存 - 最大堆容量Xmx - 最大方法區容量MaxPermSize)/ 最大棧空間Xss

這樣,4G的伺服器單個進程可以開多少線程,可以粗略計算出來,大概是5000個線程。

Ⅲ 如何使用java多線程處理http請求,求思路

1、先說長連接吧,如果TCP協議的話長連接可以通過心跳包來實現。 2、推送的話,這個可以弄一個定時器,來控制線程,推送發送完畢,線程stop()。

Ⅳ java 多線程有幾種實現方法

1、繼承Thread類實現多線程
繼承Thread類的方法盡管被我列為一種多線程實現方式,但Thread本質上也是實現了Runnable介面的一個實例,它代表一個線程的實例,並且,啟動線程的唯一方法就是通過Thread類的start()實例方法。start()方法是一個native方法,它將啟動一個新線程,並執行run()方法。這種方式實現多線程很簡單,通過自己的類直接extend Thread,並復寫run()方法,就可以啟動新線程並執行自己定義的run()方法。例如:

[java] view plain
public class MyThread extends Thread {
public void run() {
System.out.println("MyThread.run()");
}
}
在合適的地方啟動線程如下:

[java] view plain
MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();

2、實現Runnable介面方式實現多線程
如果自己的類已經extends另一個類,就無法直接extends Thread,此時,必須實現一個Runnable介面,如下:

[java] view plain
public class MyThread extends OtherClass implements Runnable {
public void run() {
System.out.println("MyThread.run()");
}
}
為了啟動MyThread,需要首先實例化一個Thread,並傳入自己的MyThread實例:

[java] view plain
MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
thread.start();
事實上,當傳入一個Runnable target參數給Thread後,Thread的run()方法就會調用target.run(),參考JDK源代碼:

[java] view plain
public void run() {
if (target != null) {
target.run();
}
}

3、使用ExecutorService、Callable、Future實現有返回結果的多線程
ExecutorService、Callable、Future這個對象實際上都是屬於Executor框架中的功能類。想要詳細了解Executor框架的可以訪問http://www.javaeye.com/topic/366591 ,這裡面對該框架做了很詳細的解釋。返回結果的線程是在JDK1.5中引入的新特徵,確實很實用,有了這種特徵我就不需要再為了得到返回值而大費周折了,而且即便實現了也可能漏洞百出。
可返回值的任務必須實現Callable介面,類似的,無返回值的任務必須Runnable介面。執行Callable任務後,可以獲取一個Future的對象,在該對象上調用get就可以獲取到Callable任務返回的Object了,再結合線程池介面ExecutorService就可以實現傳說中有返回結果的多線程了。下面提供了一個完整的有返回結果的多線程測試例子,在JDK1.5下驗證過沒問題可以直接使用。

閱讀全文

與javahttp多線程相關的資料

熱點內容
邱百瑞pDF 瀏覽:386
android軟體開發平台 瀏覽:799
禪讓PDF 瀏覽:227
哪裡有種水果的app 瀏覽:461
php招聘長沙 瀏覽:257
sd卡加密後沒用 瀏覽:452
五菱榮光壓縮機位置 瀏覽:689
壓縮機活門和活塞的區別 瀏覽:49
伺服器按類型可以怎麼劃分 瀏覽:411
反編譯三件套教程 瀏覽:498
cmd命令刪除文件夾命令 瀏覽:179
消息是怎麼進入安卓系統的 瀏覽:228
韓國地下錢庄app在哪裡下載 瀏覽:182
cs15伺服器怎麼加op密碼 瀏覽:862
方舟手游伺服器如何快速發展 瀏覽:669
壓縮機有幾個軸承 瀏覽:79
超額收益pdf 瀏覽:450
加密絲帶 瀏覽:172
伺服器編程能找什麼工作 瀏覽:261
51單片機藍牙控制 瀏覽:503