java的多线程机制

java的多线程机制

ID:26886777

大小:295.00 KB

页数:43页

时间:2018-11-29

java的多线程机制_第1页
java的多线程机制_第2页
java的多线程机制_第3页
java的多线程机制_第4页
java的多线程机制_第5页
资源描述:

《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){}}}}}线

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。