文档详情

Java程序设计基础教程((慕课版)(第2版) 课件 第10单元 并发编程.pptx

发布:2025-05-25约2.62万字共49页下载文档
文本预览下载声明

第10单元并发编程Java程序设计基础教程((慕课版)(第2版))

目录导航10.1线程与进程10.3线程的调度10.2线程的创建10.4多线程10.5项目实战10.6单元小结

10.1线程与进程线程(Thread)是进程中某个单一顺序的控制流,被称为轻量级进程(LightweightProcess),是比进程更小的执行单位,也是程序执行流中最小的单位。一个标准的线程由线程ID、当前指令指针、寄存器集合和堆栈组成。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程也可以并发执行。由于进程的所有资源是固定的且线程间存在相互制约关系,线程可能处于就绪、阻塞和运行等状态,令线程的执行呈现出间断性。线程之间可以共享代码和数据,进行实时通信和必要的同步操作等。一个程序至少拥有一个进程,每个进程拥有一个或者多个线程。每个线程都有自己独立的资源和生命周期。进程和线程的最大区别之一在于进程是由操作系统来控制的,而线程则是由进程来控制的。进程都是相互独立的,各自享有各自的内存空间,因此进程间的通信是昂贵且受限的,进程间的转换也是需要开销的;线程则共享进程的内存空间,线程通信是便宜的,且线程间的转换也是低成本的,但这种低成本低开销的通信可能会产生意想不到的错误:当多个线程访问同一个变量时,获取到的值是不一样的。

目录导航10.1线程与进程10.3线程的调度10.2线程的创建10.4多线程10.5项目实战10.6单元小结

10.2.1继承Thread类Thread类是实体类,该类封装了线程的行为。想要利用Thread类创建一个线程,必须创建一个从Thread类导出的子类,并实现Thread类的run()方法。在run()方法内部可以根据需要编写相应的实现逻辑,最后调用Thread类的start()方法来执行。Thread类的构造方法有很多种,每种构造方法的用途各异,如表所示。构造方法说明Thread()构造一个线程对象Thread(Runnabletarget)构造一个线程对象,其中target是要创建线程的目标对象,它实现了Runnable接口中的run()方法Thread(Stringname)以指定名称构造一个线程对象Thread(ThreadGroupgroup,Runnable

target)在指定线程组中构造一个线程对象,使用目标对象target的run()方法Thread(Runnabletarget,Stringname)以指定名称构造一个线程对象,使用目标对象target的run()方法Thread(ThreadGroupgroup,Runnable

target,Stringname)在指定的线程组中创建一个指定名称的线程,使用目标对象target的run()方法Thread(ThreadGroupgroup,Runnable

target,Stringname,longstackSize)在指定线程组中构造一个线程对象,用name指定线程的名字,使用目标对象target的run()方法作为线程的执行体,用stackSize指定堆栈大小

10.2.1继承Thread类Thread类也提供了很多辅助方法,以让线程正常运行和方便程序员对线程的控制,其常用方法如表所示。辅助方法说明staticintactiveCount()返回线程组中正在运行的线程的数目voidcheckAccess()确定当前运行的线程是否有权限修改线程staticThreadcurrentThread()返回当前正在执行的线程voiddestroy()销毁线程,但不回收资源staticvoiddumpStack()显示当前线程的堆栈信息longgetId()返回当前线程的IDStringgetName()返回当前线程的名称intgetPriority()返回当前线程的优先级Thread.StategetState()返回当前线程的状态ThreadGroupgetThreadGroup()返回当前线程所属的线程组voidinterrupt()中断线程booleanisAlive()判断当前线程是否存活booleanisDaemon()判断当前线程是否是守护线程booleanisInterrupted()判断当前线程是否被中断voidjoin()等待直到线程死亡voidjoin(longmillis)最多等待millisms,直到线程死亡

10.2.1继承Thread类续表辅助方法说明voidrun()如果类是使用单独的Runnable对象构造的,将调用Runnable对象的run()方法,否则本方法不进

显示全部
相似文档