基础多线程课件.ppt

基础多线程课件.ppt

ID:57046140

大小:1.13 MB

页数:51页

时间:2020-07-28

基础多线程课件.ppt_第1页
基础多线程课件.ppt_第2页
基础多线程课件.ppt_第3页
基础多线程课件.ppt_第4页
基础多线程课件.ppt_第5页
资源描述:

《基础多线程课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、多线程本章内容线程的概念模型线程的创建和启动临界资源、对象锁线程的互斥和同步程序、进程与多任务程序(program)是对数据描述与操作的代码的集合,是应用程序执行的脚本。进程(process)是程序的一次执行过程,是系统运行程序的基本单位。程序是静态的,进程是动态的。系统运行一个程序即是一个进程从创建、运行到消亡的过程。多任务(multitask)在一个系统中可以同时运行多个程序,即有多个独立运行的任务,每个任务对应一个进程。线程线程(thread):比进程更小的运行单位,是程序中单个顺序的流控制。一个进程中可以包含多个线程。简单

2、来讲,线程是一个独立的执行流,是进程内部的一个独立执行单元,相当于一个子程序。一个进程中的所有线程都在该进程的虚拟地址空间中,使用该进程的全局变量和系统资源。操作系统给每个线程分配不同的CPU时间片,在某一时刻,CPU只执行一个时间片内的线程,多个时间片中的相应线程在CPU内轮流执行。AThreadAProgramTwoThreadAProgram创建多线程每个Java程序启动后,虚拟机将自动创建一个主线程可以通过以下两种方式自定义线程类:创建java.lang.Thread类的子类,重写该类的run方法创建java.lang.R

3、unnable接口的实现类,实现接口中的run方法继承Thread类Thread:代表一个线程类Thread类Thread类中的重要方法:run方法:包括线程运行时执行的代码,通常在子类中重写它。start方法:启动一个新的线程,然后虚拟机调用新线程的run方法Thread类代码示例创建多线程问题:要定义的线程类已经显式继承了一个其他的类怎么办?Runnable接口Runnable接口中只有一个未实现的run方法,实现该接口的类必须重写该方法。Runnable接口与Thread类之间的区别Runnable接口必须实现run方法,而

4、Thread类中的run方法是一个空方法,可以不重写Runnable接口的实现类并不是真正的线程类,只是线程运行的目标类。要想以线程的方式执行run方法,必须依靠Thread类Runnable接口适合于资源的共享问题MyRunnablemyR1=newMyRunnable();//创建线程对象1Threadthread1=newThread(myR1);//启动线程对象1thread1.start();MyRunnablemyR1=newMyRunnable();myR1.run();若不使用线程的start方法,直接使用run方

5、法,可以吗?线程的生命周期线程的生命周期:指线程从创建到启动,直至运行结束可以通过调用Thread类的相关方法影响线程的运行状态线程的运行状态新建(New)可执行(Runnable)运行(Running)阻塞(Blocking)死亡(Dead)线程的生命周期线程的生命周期新建状态(New)当创建了一个Thread对象时,该对象就处于“新建状态”没有启动,因此无法运行可执行状态(Runnable)其他线程调用了处于新建状态线程的start方法,该线程对象将转换到“可执行状态”线程拥有获得CPU控制权的机会,处在等待调度阶段。线程的生

6、命周期运行状态(Running)处在“可执行状态”的线程对象一旦获得了CPU控制权,就会转换到“执行状态”在“执行状态”下,线程状态占用CPU时间片段,执行run方法中的代码处在“执行状态”下的线程可以调用yield方法,该方法用于主动出让CPU控制权。线程对象出让控制权后回到“可执行状态”,重新等待调度。线程的生命周期阻塞状态(Blocking)线程在“执行状态”下由于受某种条件的影响会被迫出让CPU控制权,进入“阻塞状态”。进入阻塞状态的三种情况调用sleep方法调用join方法执行I/O操作sleep()方法调用sleep方

7、法Thread类的sleep方法用于让当前线程暂时休眠一段时间参数millis的单位是毫秒sleep方法示例线程的生命周期调用join方法(合并某个线程)处在“执行状态”的线程如果调用了其他线程的join方法,将被挂起进入“阻塞状态”目标线程执行完毕后才会解除阻塞,回到“可执行状态”执行I/O操作线程在执行过程中如果因为访问外部资源(等待用户键盘输入、访问网络)时发生了阻塞,也会导致当前线程进入“阻塞状态”。线程的生命周期方法解除阻塞睡眠状态超时调用join后等待其他线程执行完毕I/O操作执行完毕调用阻塞线程的interrupt方

8、法(线程睡眠时,调用该线程的interrupt方法会抛出InterruptedException)线程的生命周期死亡状态(Dead):处于“执行状态”的线程一旦从run方法返回(无论是正常退出还是抛出异常),就会进入“死亡状态”。已经“死亡”的线程

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

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

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