文档介绍:第9章多线程与Applet//例程9-1:/*演示采用多线程技术计算圆周率*/lassPi{ publicstaticvoidmain(String[]args){ PiCaculator pc=newPiCaculator(); Threadt=newThread(pc); (); try{ (10000); //休眠,等待可能出现的异常情况(); }catch(InterruptedException e){ (); } }}classPiCaculatorimplementsRunnable{ private doublelatestPiEstimate; publicvoidrun(){ try{ ("="+ +"\t"); calPi(); ("thelatest PI="+); }catch(InterruptedException e){ ("The caculatorisInterrupted."); } }/**用于计算圆周率的方法,accuracy为计算精度*/ private voidcalPi(uracy)throwsInterruptedException{ =; longiteration =0; int sign=-1; //按给定精度计算圆周率 while(()>accuracy){ if(()) thrownewInterruptedException(); iteration++; sign=-sign; +=(sign*(2*iteration-1)); } }}//例程9-2:/*演示没有进行线程同步所带来的问题*/lassSynDemo{ publicstaticvoidmain(String[]args){ DemostratorshareDemostrator=newDemostrator(); Threadt1=newThread(shareDemostrator,"t1"); Threadt2=newThread(shareDemostrator,"t2"); (); (); }}classDemostratorimplementsRunnable{ privateintshareData=0; publicvoidrun(){ Threadt=(); for(inti=1;i<=5;i++){ intcopy=shareData; try{ ((int)(()*1000)); }catch(Exceptione){ (); } ("Thread"+()+":copy="+copy +"\tshareData="+shareData); shareData++; } }}//例程9-3:lassDeadLockDemo{ publicstaticvoidmain(String[]args){ DemoObjecta=newDemoObject(); DemoObjectb=newDemoObject(); =b; =a; Threadt1=newThread(a,"t1"); Threadt2=newThread(b,"t2"); (); (); }}classDemoObjectimplementsRunnable{ publicDemoObjectanother=null; publicvoidr