Javase复习系列——线程与并发

    技术2026-09-20  4

    文章目录

    `cho1.`基本问题`cho2.`CPU资源分配`cho3.`三种线程分布`cho4.`守护线程&用户线程`cho5.`线程的生命周期线程的创建线程的调度 `cho6.`常用方法一览

    cho1.基本问题

    什么是进程 程序执行时的一个实例,系统为每个进程分配不同的内存区域。什么是线程 进程中包括一个或多个线程,线程切换的开销小。什么是多线程 并行执行多个线程。 4.学习要点 多写代码练习,多次观察运行结果。 理解时候利用画图,思路会比较清晰。 线程并发是重点(这里我没有细说,后面补充)

    cho2.CPU资源分配

    系统中存在多个进程,CPU为每个进程分配内存区域。 进程获得的内存区域具有共享区域,每个线程具有各自独立的栈区。 共享区域分为三段: 代码段:存放代码、常量。数据段:存放全局变量、静态变量。扩展段:堆存储。 线程的栈区存储着线程内的局部变量、临时变量。

    cho3.三种线程分布

    单线程程序 一个简单那的程序,只具有一个基本的main线程。所有的程序一定存在一个主线程。基本Java程序 Java程序本身具有垃圾回收机制和异常机制。因此,基本的Java程序,具有以下三个线程: main:主线程。 gc:垃圾回收线程。 exception:异常处理线程。 多线程Java程序 在基本的Java程序基础上,增加多个线程。

    cho4.守护线程&用户线程

    线程分为两类:守护线程、用户线程。 守护线程为用户线程服务,用户线程使用setDeamon(true),可以将用户线程设置为守护线程。 常见的守护线程:垃圾回收线程。 当JVM中只存在守护线程,则JVM退出;守护线程会随主线程一起消亡。

    cho5.线程的生命周期

    参考链接:多线程(一):创建线程和线程的常用方法 这里只做简略描述,更多细节可以去参考链接中查看,本部分很多内容都借鉴了该链接。

    线程的创建

    方式一:(不推荐)

    继承Thread类。重写run方法。创建线程对象。调用start方法:启动线程,调用run方法。

    方式二:(线程无返回值) 1)实现Runnable接口。 2) 重写run方法。 3) 通过含参构造器创建线程对象。 4) 调用start方法 Thread implements Runnable

    方式三:(线程有返回值) 1)实现Callable接口。 2)重写call方法。 3)使用FutureTask封装线程对象。 4)使用Thread封装futureTask对象。 5)调用start方法。 FutureTask implements RunnableFuture RunnableFuture extends Runnable

    线程的调度

    线程调度策略:优先级高的线程,抢占CPU资源。调度方法: 优先级相同,按照等待队列先进先出。 优先级高,优先调度抢占策略。 优先级范围1(Min)-10(Max)相关方法:getPriority/setPriority子类线程继承父类线程的优先级。

    cho6.常用方法一览

    方法名说明start启动一个线程,将线程加入线程队列run线程的主体操作内容,即线程体getName获取线程名称setName设置线程名称currentThread返回当前线程实例sleep线程进入休眠,保留同步锁interrupt打断线程休眠,进入就绪状态wait线程进入等待状态,释放同步锁。该方法必须写在synchronized内。notify唤醒休眠或者等待的线程。该方法必须写在synchronized内。join若在A线程执行时,调用了B线程的join,则A线程等待阻塞,直到B线程结束,A线程才会进入执行状态。yield让线程进入就绪状态,不会释放锁。setDaemon将线程设置为守护线程。

    多线程的三个案例

    Processed: 0.008, SQL: 9