⑴ java的多線程有什麼用處
java的多線程一般用於網路層
簡單的理解,你訪問網站的時候肯定有過一次開很多個網頁,然後再去一個個看,這個就是多線程的類似原理。
單線程可以理解為你每次只開一個網頁,要看其他網頁的時候先關了原來的網頁後才去訪問一個新網頁。
單線程的缺點是順序執行,只有一個結束了,下一個才會執行,如果網路阻塞等原因,程序會一直等待返回信息而什麼都不去做了,這樣就造成了效率的降低。
多線程會分段分步執行,如果一個線程卡死在網路上面(也就是打不開網頁的情況),他不會一直等待,會先執行其他的訪問,然後再回來看一下卡死的線程是否能繼續,如果設置了超時會報錯然後釋放那個線程。
⑵ java.多線程情況下,我的main方法運行結束了,到run方法的代碼還沒執行結束,會中止嗎
main本質上也是屬於一個線程,當所有線程都執行完成了JVM才會退出,所以針對你的問題,答案是:
如果main方法運行結束了,但是run沒有執行結束,那麼main會終止,但是run不會終止。
⑶ 基礎Java題 試編寫一個多線程的程序:啟動4個線程。其中兩個循環10次,每次將某全局變數加1,另兩個循環1
publicclassDay18_A{
publicstaticvoidmain(String[]args)throwsInterruptedException{
Recounrec=Recoun.getRec();
Thread[]trr=newThread[4];
for(inti=0;i<4;i++){
trr[i]=newThread(newNumberTest(rec,i),"線程"+(i+1)+": ");
}
for(Threadthread:trr){
thread.start();
}
for(Threadthread:trr){
thread.join();
}
System.out.println("所有線程結束查看結果:"+rec.getCount());
}
}
{
privateRecounre;
privateintn;
NumberTest(Recounr,inti){
this.re=r;
this.n=i;
}
publicvoidrun(){
for(inti=0;i<10;i++){
re.method(n);
}
}
}
classRecoun{
privateintcount=0;
privateRecoun(){
}
privatestaticfinalRecounrec=newRecoun();
publicstaticRecoungetRec(){
returnrec;
}
publicsynchronizedvoidmethod(inti){
if(i%2==0){
System.out.println(Thread.currentThread().getName()+(count++));
}else{
System.out.println(Thread.currentThread().getName()+(count--));
}
}
publicsynchronizedintgetCount(){
returncount;
}
}