java多线程课件.ppt
合集下载
《JAVA多线程》PPT课件
21.
myThread
t1,t2,t3,t4;
22.
t1=new myThread("Thread 1");
23.
t2=new myThread("Thread 2");
24.
t3=new myThread("Thread 3");
25.
t4=new myThread("Thread 4");
26.
4.
number=num;
5.
System.out.println("创建线程:" +number);
6. }
7. public void run(){
8.
while(true){
9.
System.out.println("线程 " + number + ":计数 " + count);
10.
if(++count==6) return;
8.2.1 多线程编程中常用的常量和方法
Thread类包含的常量有:
–1. public static final int MAX_PRIORITY: 最大 优先级,值是10。
–2. public static final int MIN_PRIORITY: 最小 优先级,值是1。
–3. public static final int NORM_PRIORITY:缺省 优先级,值是5。
– isAlive( ) : 判断线程是否处于执行的状态,返回值true表 示处于运行状态,false表示已停止。
– start( ) :使调用该方法的线程开始执行。 – run( ) :该方法由start( )方法自动调用。
10-java多线程PPT优秀课件
第十章 多线程
本讲内容
11.1 线程的概念 11.2 线程的状态 11.3 多线程编程 11.4 线程同步
2
11.1 线程的概念
人们常说做事情要一心一意,不能三心二意。 在现实世界中,其实很多事情可以并发执行的。比如,
人体在接受外界信息时,视觉、嗅觉、听觉、味觉、 触觉这些感知器官统统都是并发执行的。所谓眼观六 路、耳听八方。 随着科学技术的发展,计算机也进入了三心二意的时 代。大家在使用计算机的时候,可以同时运行两个甚 至两个以上的程序:比如一边听歌、一边上网看新闻, 还可以同时下载电影。
操作系统的进程并发机制可以帮助我们实现这一目的。
实际情况是由操作系统负责管理 CPU 等硬件资源的分 配,通过采用时间片原理,以非常小的时间间隔交替 执行多个程序。
因此,给我们大家一种多个程序被同时执行的错觉, 即并发执行。
上网 听歌
5
我们把支持并发执行的操作系统称为多任务操 作系统。
操作系统不仅要管理计算机的各个硬件资源 (例如CPU)的分配,还要管理软件的执行。
15
线程的生命周期
notify( )
CPU run( )
start( )
调度
sleep( )
stop( )
创建
就绪
运行
非运行
停止
wait( )
16
11.3 多线程编程
Java中有两种方法来创建一个新的线程:
➢ 继承 Thread 类 ➢ 实现 Runnable 接口
无论采用哪种方法,都要使用到Thread类及其 相关的方法。
Java与多线程
Java语言的一个重要特点就是对多线程的支持, 它使得编程人员可以很方便地开发出具有多线程 功能、能同时处理多个任务的应用程序。
本讲内容
11.1 线程的概念 11.2 线程的状态 11.3 多线程编程 11.4 线程同步
2
11.1 线程的概念
人们常说做事情要一心一意,不能三心二意。 在现实世界中,其实很多事情可以并发执行的。比如,
人体在接受外界信息时,视觉、嗅觉、听觉、味觉、 触觉这些感知器官统统都是并发执行的。所谓眼观六 路、耳听八方。 随着科学技术的发展,计算机也进入了三心二意的时 代。大家在使用计算机的时候,可以同时运行两个甚 至两个以上的程序:比如一边听歌、一边上网看新闻, 还可以同时下载电影。
操作系统的进程并发机制可以帮助我们实现这一目的。
实际情况是由操作系统负责管理 CPU 等硬件资源的分 配,通过采用时间片原理,以非常小的时间间隔交替 执行多个程序。
因此,给我们大家一种多个程序被同时执行的错觉, 即并发执行。
上网 听歌
5
我们把支持并发执行的操作系统称为多任务操 作系统。
操作系统不仅要管理计算机的各个硬件资源 (例如CPU)的分配,还要管理软件的执行。
15
线程的生命周期
notify( )
CPU run( )
start( )
调度
sleep( )
stop( )
创建
就绪
运行
非运行
停止
wait( )
16
11.3 多线程编程
Java中有两种方法来创建一个新的线程:
➢ 继承 Thread 类 ➢ 实现 Runnable 接口
无论采用哪种方法,都要使用到Thread类及其 相关的方法。
Java与多线程
Java语言的一个重要特点就是对多线程的支持, 它使得编程人员可以很方便地开发出具有多线程 功能、能同时处理多个任务的应用程序。
Java多线程技术PPT课件
Thread类的常用构造方法如下:
❖ public Thread(Runnable target) ❖ public Thread(String name)
9
2. 如何实现多线程? 2.1 Thread类和Runnable接口
Thread类有3个有关线程优先级的常量:
❖ Thread.MIN_PRIORITY=1; ❖ Thread.MAX_PRIORITY=10; ❖ Thread.NORM_PRIORITY=5;
学习提纲
1
1. 程序、进程和线程 1.1 程序、进程和线程
程 序 ( Program ) 是能完成预定功能的静 态的指令序列。
2
பைடு நூலகம்
1. 程序、进程和线程 1.1 程序、进程和线程
为提高操作系统的并行性和资源利用率,提出了进程(Process)的概 念。简单地说进程是程序的一次执行,进程是动态的。
为解决此问题,又提出了线程(Thread)的概念。将资源分配和处理器 调度的基本单位分离,进程只是资源分配的单位,线程是处理器调度的 基本单位。一个进程包含多个并发的线程。一个进程中的线程只能使用进
程的资源和环境。线程只包含程序计数器、栈指针及堆栈,不包含进程地址
空 间 的 代 码 和 数 据 , 因 此 线 程 被 称 为 轻 质 进 程 ( Light Weight Process)。线程提高了系统的整体性能和效率。
正在执行的线程休眠(暂停执行)。
11
2. 如何实现多线程? 2.1 Thread类和Runnable接口
Runnable接口在ng包中,定义如下:
❖ public interface Runnable
Runnable接口中只包含一个抽象方法:
❖ public Thread(Runnable target) ❖ public Thread(String name)
9
2. 如何实现多线程? 2.1 Thread类和Runnable接口
Thread类有3个有关线程优先级的常量:
❖ Thread.MIN_PRIORITY=1; ❖ Thread.MAX_PRIORITY=10; ❖ Thread.NORM_PRIORITY=5;
学习提纲
1
1. 程序、进程和线程 1.1 程序、进程和线程
程 序 ( Program ) 是能完成预定功能的静 态的指令序列。
2
பைடு நூலகம்
1. 程序、进程和线程 1.1 程序、进程和线程
为提高操作系统的并行性和资源利用率,提出了进程(Process)的概 念。简单地说进程是程序的一次执行,进程是动态的。
为解决此问题,又提出了线程(Thread)的概念。将资源分配和处理器 调度的基本单位分离,进程只是资源分配的单位,线程是处理器调度的 基本单位。一个进程包含多个并发的线程。一个进程中的线程只能使用进
程的资源和环境。线程只包含程序计数器、栈指针及堆栈,不包含进程地址
空 间 的 代 码 和 数 据 , 因 此 线 程 被 称 为 轻 质 进 程 ( Light Weight Process)。线程提高了系统的整体性能和效率。
正在执行的线程休眠(暂停执行)。
11
2. 如何实现多线程? 2.1 Thread类和Runnable接口
Runnable接口在ng包中,定义如下:
❖ public interface Runnable
Runnable接口中只包含一个抽象方法:
第11讲Java的多线程机制精品PPT课件
Not Runnable
stop方法 调用
4. 死亡状态(Dead)
Dead
(1)线程的终止一般可通过两种方法实现:自然撤消(线程
执行完)或是被停止(调用stop()方法,已被取消。)
(2)isAlive方法:1)当该线程为可运行或被阻塞的线程时,
返回true;2)否则,返回false。
2020/10/8
第11讲
上述示例间的区别?
2020/10/8
JAVA 语言
第11讲
线程的调度
调度策略 1
时间片 2
抢占式:高优先级的线程抢占CPU
Java的调度方法
同优先级线程组成先进先出队列,使用时 间片策略
对高优先级,使用优先调度的抢占式策略
2020/10/8
JAVA 语言
第11讲
11.1.2 线程的模型
()、wait() 、输入输出流中发生线程阻塞。
2020/10/8
JAVA 语言
线程的状态及其转换
第11讲
yield
new Thread
sleep、wait、suspend、
New start Runnable
I/O阻塞
sleep结束、notify、
resume、I/O操作完成
run方法退出
stop方法调用
程序代码见Counter .java
2020/10/8
JAVA 语言
第11讲
学习要点
▪ 掌握多线程的概念 ▪ 掌握创建线程的方法 ▪ 了解线程同步、死锁的概念 ▪ 掌握多线程在实际编程中的应用方
法
2020/10/8
JAVA 语言
第11讲
11.1 线程与多线程
Java多线程PPT课件
线程又称为轻量级进程,它和进程一样拥有独立的执行控制, 由操作系统负责调度,区别在于线程没有独立的存储空间, 而是和所属进程中的其它线程共享一个存储空间。这使得线 程间的通信远较进程简单,而进程之间的通信则比较困难, 另外在资源的占用上,线程比进程要小。
5
线程(Thread)和进程(Process)的关系很紧密,进程和 线程是两个不同的概念,进程的范围大于线程。
7
执行主线程示例。
//MainThreadDemo.java public class MainThreadDemo { public static void main(String args[]) { Thread t = Thread.currentThread(); System.out.println("当前线程名称是: " + t.getName()); t.setName("MyJavaThread"); System.out.println("改名后线程名称是: " + t.getName());
}
}
11
最初,程序员们用所掌握的有关机器底层的 知识来编写中断服务程序,主进程的挂起是 通过硬件中断来触发的。
尽管这么做可以解决问题,但是其难度太大, 而且不能移植,所以使得将程序移植到新型 号的机器上时,既费时又费力。
12
我们只是想把问题切分成多个可独立运行的 部分(任务),从而提高程序的响应能力。 在程序中,这些彼此独立运行的部分称之为tem.out.println("传送文件2");
Thread.sleep(100 * 10);
System.out.println("文件2传送完毕");
5
线程(Thread)和进程(Process)的关系很紧密,进程和 线程是两个不同的概念,进程的范围大于线程。
7
执行主线程示例。
//MainThreadDemo.java public class MainThreadDemo { public static void main(String args[]) { Thread t = Thread.currentThread(); System.out.println("当前线程名称是: " + t.getName()); t.setName("MyJavaThread"); System.out.println("改名后线程名称是: " + t.getName());
}
}
11
最初,程序员们用所掌握的有关机器底层的 知识来编写中断服务程序,主进程的挂起是 通过硬件中断来触发的。
尽管这么做可以解决问题,但是其难度太大, 而且不能移植,所以使得将程序移植到新型 号的机器上时,既费时又费力。
12
我们只是想把问题切分成多个可独立运行的 部分(任务),从而提高程序的响应能力。 在程序中,这些彼此独立运行的部分称之为tem.out.println("传送文件2");
Thread.sleep(100 * 10);
System.out.println("文件2传送完毕");
第十二章Java多线程编程精品PPT课件
二、线程的状态和生命周期
4.阻塞 一个正在执行的线程如果在某些特殊
情况下,如被人为挂起或需要执行费时的 输入输出操作时,将让出CPU并暂时中止 自己的执行,进入阻塞状态。
阻塞时它不能进入排列队列,只有当 引起阻塞的原因被消除时,线程才可以转 入就绪状态,重新进到线程队列中排队等 待CPU资源,以便从原来终止处开始继续 执行。
1.新建 当一个Thread类或其子类的对象被声明并创建时
,新生的线程对象处于新建状态。此时它已经有了 相应的内存空间和其他资源,并已被初始化。 2.就绪
处于新建状态的线程被启动后,将进入线程队列 排队等待CPU时间片,此时它已经具备了运行的条 件,一旦轮到它来享用CPU资源时,就可以脱离创 建它的主线程独立开始自己的生命周期了。另外, 原来处于阻塞状态的线程被解除阻塞后也将进入就 绪状态。
例子.ThreadTest.java
二、Java中线程的创建
通过扩展Thread类创建线程-方法一
1.创建Thread类的子类。 2.重写Thread类中的run()方法。 3.创建子类的对象。 4.调用线程对象的start()方法。
例子.ThreadTest.java
二、Java中线程的创建
Runnable的原型: public interface Runnable { void run(); }
二、Java中线程的创建
二、Java中线程的创建
二、Java中线程的创建
二、Java中线程的创建
二、Java中线程的创建
通过扩展Thread类创建线程-方法一
1.创建Thread类的子类。 2.重写Thread类中的run()方法。 3.创建子类的对象。 4.调用线程对象的start()方法。
相关主题