導航:首頁 > 編程語言 > java線程死循環

java線程死循環

發布時間:2022-10-24 10:13:57

java多線程中的死循環

ss.accept();方法在沒有客戶端連接時會進入阻塞狀態,所以循環到這步時代碼就不再執行了等待客戶端連接,所以不會死循環.普通的方法,肯定會循環執行到死...

❷ Java編程裡面死循環推薦使用嗎

看情況了,如果能不用死循環的話還是盡量不用。因為控制不好程序就會出現大量佔用CPU的情況
但是有時經常不得已需要用的,比如伺服器每段間隔取執行某個任務,就可以用線程加死循環實現的,每次執行完後線程休眠休眠一段時間再執行,這是很常用的辦法。由於線程執行完後會休眠,所以不會出現cpu大量佔用。不過需要注意線程的數目。
重要還是看需求,需要了就用。

❸ 一個java程序,執行之後老是會出現死循環,煩請大神解答

你在主線程裡面的while(true) 導致死循環了,起碼你要在裡面執行一條稍微好時間的語句,或者加上
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
讓程序暫停一下,再循環

❹ java多線程中的死循環

是這樣的,ss.accept()方法是阻塞的,也就是說ss所在的線程運行到accept()函數就會一直等待,直到ss接收到了一個Socket請求。正因為accept()是阻塞的,所以一般會把這個函數放在一個單獨的線程,這樣就不會影響主線程(例如程序界面)的運行,Socket編程幾乎是肯定和多線程編程一起用的。accept()放進了單獨的線程了自然就不會影響後面代碼的執行,因為這時accept()的時間片和後續代碼的時間片會由JVM調配,而不是按照代碼編排的先後順序了。
另外你對死循環的理解有偏差,所謂死循環是指循環條件永遠為真而導致循環一直不結束,而由於循環內部的方法阻塞導致的循環不結束不屬於死循環,這兩個有本質的差別。通常Socket.accept()是該放進一個死循環的,也就是你的while(true);

❺ Java線程加了死循環,但異常終止,可能是什麼導致

ss.accept()方法是阻塞的,也就是說ss所在的線程運行到accept()函數就會一直等待,直到ss接收到了一個Socket請求。正因為accept()是阻塞的,所以一般會把這個函數放在一個單獨的線程,這樣就不會影響主線程(例如程序界面)的運行

❻ java死循環會把電腦燒了嗎

遇到死循環不會燒掉電腦,只會讓電腦卡
開發java項的過程中,遇到java死循環是在所難免的,有經驗的java工程師能夠立馬解決這種問題,但是新手就未必了,java死循環不會把電腦燒了,死循環占你內存,電腦會卡的不行。死循環的原因一般都是線程A先獲得對象鎖時,由於while循環,線程A一直在while空循環中。而線程B也因為無法獲得鎖而執行不了methodB()。因此如果在一個線程在synchronized方法中無法退出,無法將鎖釋放,另一個線程就只能無限等待了

❼ java 如何停止一個死循環

java 停止一個死循環,可以使用break關鍵字,跳出循環,如下代碼:

packagecom.qiu.lin.he;

publicclassCeshi{
publicstaticvoidmain(String[]args){
for(inti=2;i>0;i++){
if(i==80){
System.out.println("死循環退出了");
break;

}
}
}
}

運行結果如下:

❽ Java中一個線程執行死循環有什麼後果

有兩個線程在並發運行,一個線程執行的代碼中含有一個死循環如:while(true)....當該線程在執行while(true)中代碼時,另一個線程會有執行。

一.示例代碼:

總結:若線程A先獲得對象鎖時,由於while循環,線程A一直在while空循環中。而線程B也因為無法獲得鎖而執行不了methodB()。

可以看出,如果在一個線程在synchronized方法中無法退出,無法將鎖釋放,另一個線程就只能無限等待了。

❾ java多線程死循環

如果你對一個線程 start 了,那你的程序中實際上有兩個線程,還有一個main
當前線程是main的子線程,實際上運行時,子線程start以後,main的方法還是會繼續往下執行,直到退出,當main退出以後,子線程也就死了,當你將死循環寫在子線程里,相當與子線程死掉了,但不影響主線程的執行,主線程遇到退出一樣退出了程序,當你寫在主線程里的死循環,那就在那裡循環,因為它沒有退出語句 System.exit(0); 或者執行到了最後一個大括弧

❿ java多線程死循環

你程序是: 服務端有不斷的向客服端寫信息,客戶端有不斷的讀來自服務端的信息。 但是反過來,客戶端沒有不斷的向服務端寫信息。服務端也沒有不斷的讀來自客戶端的信息。 用線程解決: 在客戶端新加一條線程,專門用來讀取來自服務端的信息。 在服務端新加一條線程,專門用來讀取來自客戶端的信息。 而在各自的main()函數中只負責不斷接收system.in信息,然後發送信息.. 其實不用線程的。。我也改了下,改的好像較多。 運行步驟: 開server端,開kehu端。客房端先寫入信息。。然後,你一句我一句。只能按這順序。。這就是沒用線程的結果。 代碼如下: 服務端: import java.net.*; import java.io.*; public class Server { public static void main(String[] args) { System.out.println("我是伺服器"); try { ServerSocket ss=new ServerSocket(8000); Socket sk=ss.accept(); OutputStream os=sk.getOutputStream(); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os)); bw.write("你好,我是伺服器,有什麼需要我服務的嘛?\n"); bw.flush(); InputStream is=sk.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); while(true) { String str=br.readLine(); if(str.equals("bye")||str==null)break; System.out.println("客戶端說:"+str); String sr=""; BufferedReader br1=new BufferedReader(new InputStreamReader(System.in)); sr=br1.readLine(); bw.write(sr+"\n"); bw.flush(); } } catch (Exception e) { System.out.println("客用戶機己斷開"); } } } 客戶端: import java.net.*; import java.io.*; public class kehu { public static void main(String[] args) { System.out.println("我是客戶"); try { Socket s=new Socket(InetAddress.getByName(null),8000); InputStream is=s.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); OutputStream os=s.getOutputStream(); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os)); String sr=""; while(true) { sr=br.readLine(); if(sr.equals("bye")||sr==null)break; System.out.println("伺服器說"+sr); BufferedReader br1=new BufferedReader(new InputStreamReader(System.in)); sr=br1.readLine(); bw.write(sr+"\n"); bw.flush(); } } catch (Exception e) { System.out.println("伺服器未開戶或己關閉~"); } } }

閱讀全文

與java線程死循環相關的資料

熱點內容
電腦編程屬於it嗎 瀏覽:353
如何分辨文件夾 瀏覽:714
哪裡能學懂通達信每個源碼的含義 瀏覽:833
命令式過去式形式 瀏覽:450
車銑復合銑六角編程實例 瀏覽:743
android通知的呼吸燈 瀏覽:907
單片機排針的功能 瀏覽:849
華為的伺服器現在被什麼公司收購 瀏覽:285
伺服器粘包怎麼處理 瀏覽:726
怎麼進創意工坊的伺服器 瀏覽:786
空調壓縮機加變頻器 瀏覽:968
加密貨幣有哪些可以玩 瀏覽:993
騰訊雲伺服器如何生成備案授權碼 瀏覽:950
計算機學演算法好還是人工智慧 瀏覽:500
java命令運行eclipse 瀏覽:979
u盤加密其他辦法 瀏覽:808
zm螺紋演算法 瀏覽:778
excel與數據分析pdf 瀏覽:153
特斯拉的智能演算法 瀏覽:204
單片機開發費用 瀏覽:937