⑴ 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;
}
}