
东理SHANDONG UNIVERSITY OF TECHNOLOGY多线程专业专注创新
专业 专注 创新 多 线 程

东理宝本章目标SHANDONG UNIVERSITY OFTECHNOLOGY了解线程的概念理解、掌握Java线程的创建及启动了解线程的生命周期和状态控制了解线程的同步与死锁(难点)专业专注创新
专业 专注 创新 本章目标 了解线程的概念 理解、掌握Java线程的创建及启动 了解线程的生命周期和状态控制 了解线程的同步与死锁(难点)

东理宝程序、进程、线程、多线程SHANDONGUNIVERSITYOFTECHNOLOGY程序(Program):为完成特定任务、用某种语言编写的一组指令的集合,指一段静态的代码★作为一个静态文件存储在计算机硬盘等存储空间。进程(Process):正在被操作系统运行的应用程序。线程(Thread):指进程中的一个执行流程一个进程可以由多个线程组成★在一个进程中可以同时运行多个不同的线程,它们分别执行不同的任务。专业专注创新
专业 专注 创新 程序、进程、线程、多线程 程序(Program):为完成特定任务、用某种语 言编写的一组指令的集合,指一段静态的代码。 作为一个静态文件存储在计算机硬盘等存储空间。 进程(Process):正在被操作系统运行的应用 程序。 线程(Thread):指进程中的一个执行流程。 一个进程可以由多个线程组成; 在一个进程中可以同时运行多个不同的线程,它们分 别执行不同的任务

东理功多线程的概念SHANDONGUNIVERSITYOFTECHNOLOGY多线程:在一个程序中可以同时执行不同的任务,这是实现并发机制的一种有效手段时间片轮回机制:★操作系统使用分时管理各个进程,按CPU时间片轮流执行每个进程。★Java的多线程:在操作系统每次分时给Java程序一个时间片的CPU时间内,在若干独立的可控制的线程之间切换。多线程的目的:为了最大限度地利用CPU资源专业专注创新
专业 专注 创新 多线程的概念 多线程:在一个程序中可以同时执行不同的任 务,这是实现并发机制的一种有效手段。 时间片轮回机制: 操作系统使用分时管理各个进程,按CPU时间片轮 流执行每个进程。 Java的多线程:在操作系统每次分时给Java程序一 个时间片的CPU时间内,在若干独立的可控制的线 程之间切换。 多线程的目的:为了最大限度地利用CPU资源

东理多线程图示SHANDONGUNIVERSITYOFTECHNOLOGY文件文件各种系统资源I0装置各种系统资源I0装置数据区段数据区段程序区段程序区段同时有数个地方在执行只有一个地方在执行传统的进程多线程的任务进程:在一个时间段内只能完成一件事情线程:在进程基础上划分,之后在同一个时间段内可以比传统进程完成的功能更多A之B,只能做一件事情AB,能多件事情
专业 专注 创新 多线程图示

东理多线程的优势SHANDONGUNIVERSITYOFTECHNOLOGY减轻编写交互频繁、涉及面多的程序的困难程序的吞吐量得到改善由多个处理器的系统,可以并发运行不同的线程(否则,任何时刻只有一个线程在运行)专业专注创新
专业 专注 创新 多线程的优势 减轻编写交互频繁、涉及面多的程序的困难 程序的吞吐量得到改善 由多个处理器的系统,可以并发运行不同的线 程(否则,任何时刻只有一个线程在运行)

东理线程与进程的区别SHANDONGUNIVERSITYOFTECHNOLOGY数据共享?多个进程的内部数据和状态是完全独立的★多线程共享一块内存空间和一组系统资源,有可能相互影响切换时的开销线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,因此线程的切换比进程切换的负担要小。专业专注创新
专业 专注 创新 线程与进程的区别 数据共享? 多个进程的内部数据和状态是完全独立的 多线程共享一块内存空间和一组系统资源,有可 能相互影响 切换时的开销 线程本身的数据通常只有寄存器数据,以及一个 程序执行时使用的堆栈,因此线程的切换比进程 切换的负担要小

东理宝主线程SHANDONGUNIVERSITYOFTECHNOLOGY当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(mainthread)。★每个Java程序都有一个隐含的主线程。主线程的重要性它是产生其他子线程的线程主线程在程序启动时自动创建,也由一个Thread对象控制。专业专注创新
专业 专注 创新 主线程 当Java程序启动时,一个线程立刻运行,该线程通 常叫做程序的主线程(main thread)。 每个Java程序都有一个隐含的主线程。 主线程的重要性 它是产生其他子线程的线程。 主线程在程序启动时自动创建,也由一个Thread对 象控制

东理客线程的创建和启动SHANDONGUNIVERSITYOFTECHNOLOGY创建线程有两种方式★定义一个Thread类的子类,覆盖Thread类的run()方法,然后创建该子类的实例。定义一个实现Runnable接口的类,实现它的run()-方法,然后将这个类的实例作为Thread类构造方法的参数,创建Thread类的实例。调用start()方法启动线程。专业专注创新
专业 专注 创新 线程的创建和启动 创建线程 有两种方式: 定义一个Thread类的子类,覆盖Thread类的run() 方法,然后创建该子类的实例。 定义一个实现Runnable接口的类,实现它的run() 方法,然后将这个类的实例作为Thread类构造方 法的参数,创建Thread类的实例。 调用start()方法启动线程

东理功客通过创建线程继承Thread类创建线程SHANDONGUNIVERSITYOFTECHNOLOGYextendsThreadpublicclassMyThread1publicstaticvoid main(Stringargs)Ⅱ获取当前线程对象,这里是主线程对象Thread t=Thread.currentThreadO;获取主线程对象out.printIn("主线程是:"+t);I创建子线程并启动MyThread1mt=newMyThread1();mt.start();I/重写父类的run(方法创建子线程并启动publicvoidrunoⅡ获取当前线程对象,这里是子线程对象out.println("子线程是:"+Thread.currentThread();
专业 专注 创新 通过扩展Thread类来创建线程 public class MyThread1 extends Thread { public static void main(String[] args) { // 获取当前线程对象,这里是主线程对象 Thread t = Thread.currentThread(); out.println("主线程是:" + t); // 创建子线程并启动 MyThread1 mt = new MyThread1 (); mt.start(); } // 重写父类的run()方法 public void run() { // 获取当前线程对象,这里是子线程对象 out.println("子线程是:" + Thread.currentThread()); . } } 继承Thread类创建线程 获取主线程对象 创建子线程并启动