欢迎来到天天文库
浏览记录
ID:26886777
大小:295.00 KB
页数:43页
时间:2018-11-29
《java的多线程机制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章Java的多线程机制程序是一段静态的代码,它是应用程序执行的蓝本进程是程序的一次动态执行,它对应了从代码加载、执行至执行完毕的一个完整过程线程是进程执行过程中产生的多条执行线索线程是比进程执行更小的单位10.1什么是线程一。程序、进程与线程例:ThreadTest.javaclassStudentThreadextendsThread{publicvoidrun(){for(inti=0;i<=5;i++){System.out.println("YouareStudents!");try{sleep(500);}catch(InterruptedExce
2、ptione){…}}}}classTeacherThreadextendsThread{publicvoidrun(){for(inti=0;i<=5;i++){System.out.println("IamaTeacher!");try{sleep(300);}catch(InterruptedExceptione){….}}}}publicclassThreadTest{staticStudentThreadstudent;staticTeacherThreadteacher;publicstaticvoidmain(String[]args){teach
3、er=newTeacherThread();student=newStudentThread();teacher.start();student.start();}}10.2多线程实现Java中实现多线程应用有两种途径:创建Thread类的子类在程序中使用Runnable接口10.2.1用Thread类的子类创建线程一、只需从Thread类派生出一个子类,在子类中一定要重写run().例:publicvoidrun(){…….}}二、然后用该子类创建一个对象StudentThreadstudent=newStudentThread();三、用start()方法启
4、动线程student.start();在程序中实现多线程,关键性操作:定义用户线程操作,即run()方法的实现在适当的时候启动线程例:ThreadTest.java主线程T1.start()Tn.start()T2.Start()主线程10.2.2Runnable()接口用Runnable()接口实现多线程时,也必须必须实现run()方法,也需用start()启动线程,但此时常用Thread类的构造方法来创建线程对象例:classBallThreadextendsAppletimplementsRunnable{publicvoidstart(){thread=
5、newThread(this);thread.start();…….}……privateThreadthread;}例:一个模拟小球平抛和自由落体的例子BallThread.javaAPI:java.lang.ThreadThread(Runnabletarget)创建一个新线程,它调用target的run(),Target是一个实现了Runnable接口的类的实例publicclassBallThreadextendsAppletimplementsRunnable{Threadred,blue;GraphicsredPen,bluePen;intt=0;pu
6、blicvoidinit(){red=newThread(this);blue=newThread(this);redPen=getGraphics();bluePen=getGraphics();redPen.setColor(Color.red);bluePen.setColor(Color.blue);}publicvoidstart(){red.start();blue.start();}publicvoidrun(){while(true){t=t+1;if(Thread.currentThread()==red){if(t>100)t=0;redPe
7、n.clearRect(0,0,110,400);redPen.fillOval(50,(int)(1.0/2*t*9.8),15,15);try{red.sleep(40);}catch(InterruptedExceptione){}}elseif(Thread.currentThread()==blue){bluePen.clearRect(120,0,900,500);bluePen.fillOval(120+7*t,(int)(1.0/2*t*9.8),15,15);try{blue.sleep(40);}catch(InterruptedExcept
8、ione){}}}}}线
此文档下载收益归作者所有