Java精解案例教程 第13课 线程

Java精解案例教程 第13课 线程

ID:45849237

大小:110.00 KB

页数:27页

时间:2019-11-18

Java精解案例教程 第13课  线程_第1页
Java精解案例教程 第13课  线程_第2页
Java精解案例教程 第13课  线程_第3页
Java精解案例教程 第13课  线程_第4页
Java精解案例教程 第13课  线程_第5页
资源描述:

《Java精解案例教程 第13课 线程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第十三章线程本章内容线程的概念模型线程的创建和启动线程的状态控制临界资源、对象锁和死锁线程的互斥和同步什么是线程线程是一个程序内部的顺序控制流。线程和进程每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。多进程:在操作系统中能同时运行多个任务(程序)多线程:在同一应用程序中有多个顺序流同时执行线程的概念模型虚拟的CPU,由java.lang.Thread类封装和虚拟CPU所执行的代码,传递给Thread类对象。CPU所处理的数据,传递给Thre

2、ad类对象。代码数据虚拟CPUJava线程模型线程体Java的线程是通过java.lang.Thread类来实现的。每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。创建线程----通过实现Runnable接口(1301)publicclassTestThread1{publicstaticvoidmain(Stringargs[]){Runner1r=newRunner1();Threadt=newThread(r);t.start();}}classRunner1implementsRunnable{publi

3、cvoidrun(){for(inti=0;i<30;i++){System.out.println("No."+i);}}}多线程Java中引入线程机制的目的在于实现多线程可以使用同一个Runnable接口(的实现类)类型的实例构造多个线程多线程之间可以共享代码和数据举例Threadt1=newThread(r);Threadt2=newThread(r);多线程举例publicclassTestThread2{publicstaticvoidmain(Stringargs[]){Runner2r=newRunner2();Threadt1=newThread(r)

4、;Threadt2=newThread(r);t1.start();t2.start();}}classRunner2implementsRunnable{publicvoidrun(){for(inti=0;i<30;i++){System.out.println("No."+i);}}}多线程共享数据和代码classMyRunnerimplementsRunnable{……}classYourRunnerimplementsRunnable{……}MyRunnerm=newMyRunner();YourRunnery1=newYourRunner();YourRu

5、nnery2=newYourRunner();Threadt1=newThread(m);Threadt2=newThread(y1);Threadt3=newThread(y2);Threadt4=newThread(y2);线程虚拟CPU代码数据t1Thread类对象t1Runner2类中的run方法Runner2类型对象rt2Thread类对象t2Runner2类中的run方法Runner2类型对象r启动线程使用start()方法启动线程启动线程是使线程进入到可运行(runnable)状态,并不一定立即开始执行该线程publicclassTestThread1{

6、publicstaticvoidmain(Stringargs[]){Runner1r=newRunner1();Threadt=newThread(r);t.start();}}线程状态转换(ThreadScheduling)线程状态转换举例publicclassTestThread3{publicstaticvoidmain(Stringargs[]){Runner3r=newRunner3();Threadt=newThread(r);t.start();}}classRunner3implementsRunnable{publicvoidrun(){for(i

7、nti=0;i<30;i++){if(i%10==0&&i!=0){try{Thread.sleep(2000);}catch(InterruptedExceptione){}}System.out.println("No."+i);}}}终止线程控制举例publicclassTestThread4{publicstaticvoidmain(Stringargs[]){Runner4r=newRunner4();Threadt=newThread(r);t.start();for(inti=0;i<100000;i++){if(i%10000==0&

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

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

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