欢迎来到天天文库
浏览记录
ID:34424105
大小:67.09 KB
页数:3页
时间:2019-03-06
《java6java6学习笔记59多线程编程new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、java6:Java6学习笔记59——多线程编程——线程的同步(version0.2)疯狂代码http://CrazyCoder.cn/ĵ:http:/CrazyCoder.cn/BlogDigest/Article76362.htmlpublicclassJoinDemoextendsObject{;publicstaticThreadcreateThread(Stringname,longnapTime){;;;finallongsleepTime=napTime;;;;Runnabler=newRunnable(){;;;;;;;publi
2、cvoidrun(){;;;;;;;;;try{;;;;;;;;;;;print("inrun()-entering");;;;;;;;;;;;Thread.sleep(sleepTime);;;;;;;;;;}catch(InterruptedExceptionx){;;;;;;;;;;;print("interrupted!");;;;;;;;;;}finally{;;;;;;;;;;;print("inrun()-leaving");;;;;;;;;;};;;;;;;};;;;;};;;;;Threadt=newThread(r,name)
3、;;;;t.start();;;;returnt;;};privatestaticvoidprint(Stringmsg){;;;Stringname=Thread.currentThread().getName();//将打印的信息前边加上由哪个线程打印的出处信息。;;;System.out.println(name+":"+msg);;};publicstaticvoidmain(String[]args){;;;Thread[]t=newThread[3];;;;/*创建了三个线程A、B、C,休眠时间分别为2s,1s,3s*/;;;t[0]
4、=createThread("threadA",2000);;;;t[1]=createThread("threadB",1000);;;;t[2]=createThread("threadC",3000);;;;for(inti=0;i5、e()+""+name);;;;;;;;print("abouttodo:"+idxStr+;;;;;;;;;;;".join()"+name);;;;;;;;longstart=System.currentTimeMillis();;;;;;;;t[i].join();//waitforthethreadtodie;;;;;;;longstop=System.currentTimeMillis();;;;;;;;print(idxStr+".join()-took"+;;;;;;;;;;;(stop-start)+"ms"+name);;;;;6、;}catch(InterruptedExceptionx){;;;;;;;print("interruptedwaitingon#"+i);;;;;;};;;};}}运行结果:main:thread[0].isAlive()=true[threadA]//主线程判断线程A的状态main:abouttodo:thread[0].join()[threadA]//主线程准备与线程A同步threadA:inrun()-entering//三个线程依次启动threadB:inrun()-enteringthreadC:inrun()-enteringt7、hreadB:inrun()-leaving//由于持续时间,B和A先结束threadA:inrun()-leavingmain:thread[0].join()-took2003ms[threadA]//主线程等待到了线程A,花费了2003msmain:thread[1].isAlive()=false[threadB]//主线程判断线程B的状态main:abouttodo:thread[1].join()[threadB]//主线程准备与线程A同步main:thread[1].join()-took0ms[threadB]//由于在同步前线层8、B已经结束了,所以当主线程等到B的时候其实是没有花费任何时间的。main:thread[2].isAlive()=true[thread
5、e()+""+name);;;;;;;;print("abouttodo:"+idxStr+;;;;;;;;;;;".join()"+name);;;;;;;;longstart=System.currentTimeMillis();;;;;;;;t[i].join();//waitforthethreadtodie;;;;;;;longstop=System.currentTimeMillis();;;;;;;;print(idxStr+".join()-took"+;;;;;;;;;;;(stop-start)+"ms"+name);;;;;
6、;}catch(InterruptedExceptionx){;;;;;;;print("interruptedwaitingon#"+i);;;;;;};;;};}}运行结果:main:thread[0].isAlive()=true[threadA]//主线程判断线程A的状态main:abouttodo:thread[0].join()[threadA]//主线程准备与线程A同步threadA:inrun()-entering//三个线程依次启动threadB:inrun()-enteringthreadC:inrun()-enteringt
7、hreadB:inrun()-leaving//由于持续时间,B和A先结束threadA:inrun()-leavingmain:thread[0].join()-took2003ms[threadA]//主线程等待到了线程A,花费了2003msmain:thread[1].isAlive()=false[threadB]//主线程判断线程B的状态main:abouttodo:thread[1].join()[threadB]//主线程准备与线程A同步main:thread[1].join()-took0ms[threadB]//由于在同步前线层
8、B已经结束了,所以当主线程等到B的时候其实是没有花费任何时间的。main:thread[2].isAlive()=true[thread
此文档下载收益归作者所有