Java多线程.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、创建线程的方式
class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str); } public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i + " " + getName()); try{
2、创建线程的方式
先来看看线程对象的初始化,类Thread的构造方法如下: public Thread( ThreadGroup group, Runnable target, String name)
▪ group指明了线程所属的线程组;
▪ target是线程体run()方法所在的对象; ▪ name是线程的名称。
sleep((int)(Math.random() * 1000)); } catch (InterruptedException e){ } } System.out.println("DONE! " + getName()); } }
一个单独的线程和顺序程序相似,也有一个入口、一个出 口以及一个顺序执行的序列,从概念上说,一个线程是一个 程序内部的一个顺序控制流。
线程并不是程序,它自己本身并不能运行,必须在程序中 运行。在一个程序中可以实现多个线程,这些线程同时运行, 完成不同的功能。
将军令 多线程
1、多线程基Baidu Nhomakorabea概念
1、多线程基本概念
第七讲 多线程
多线程基本概念 创建线程的方式 线程的生命周期及控制 线程的优先级及调度 多线程的互斥与同步 守护线程 (Daemon) 线程组 (ThreadGroup)
1、多线程基本概念
并发现象在现实生活中大量存在
人体(消化、运动) 计算机(同时运行多中程序)
多线程——在一个程序中实现并发
target必须实现接口Runnable。在接口Runnable中只定义了 一个方法void run()作为线程体。任何实现接口Runnable的对 象都可以作为一个线程的目标对象。
类Thread本身也实现了接口Runnable(空实现),因此, 上述构造方法中各参数都可以为null。
2、创建线程的方式
从逻辑的观点来看,多线程意味着一个程序的多行语句同 时执行,但是多线程并不等于多次启动一个程序,操作系统 也不会把每个线程当作独立的进程来对待:
两者的粒度不同,是两个不同层次上的概念。进程是由 操作系统来管理的,而线程则是在一个程序(进程)内。
不同进程的代码、内部数据和状态都是完全独立的,而 一个程序内的多线程是共享同一块内存空间和同一组系统 资源,有可能互相影响。
▪ 虚拟CPU,封装在java.lang.Thread类中,它控制着整
个线程的运行;
▪ 执行的代码,传递给Thread类,由Thread类控制顺序
执行;
▪ 处理的数据,传递给Thread类,是在代码执行过程中
所要处理的数据。
2、创建线程的方式
Java的线程是通过Java的软件包java.lang中 定义的类Thread来实现的。当生成一个Thread类 的对象之后,就产生了一个线程,通过该对象 实例,可以启动线程、终止线程、或者暂时挂 起线程等。
载工具)
适合于有人机交互又有计算量的程序(如字处理程序Word,Excel)
减轻编写交互频繁、涉及面多的程序的困难(如监听网络端口) 程序的吞吐量会得到改善(同时监听多种设备,如网络端口、串口、并口
以及其他外设)
有多个处理器的系统,可以并发运行不同的线程(否则,任何时刻只有
一个线程在运行)
1、多线程基本概念
从Thread类的构造方法可以看出,用户可以有两种方法构 造自己的run( )方法。
方法一:
定义一个线程类,它继承类Thread并重写其中的方法 run()。这时在初始化这个类的实例时,目标对象target可以 为null,表示这个实例本身具有线程体。由于Java只支持单 继承,用这种方法定义的类不能再继承其他类。
编程语言一般提供了串行程序设计的方法 计算机的并发能力由操作系统提供 Java在语言级提供多线程并发的概念
1、多线程基本概念
以前所编写的程序,每个程序都有一个入口、一个出口以 及一个顺序执行的序列,在程序执行过程中的任何指定时刻, 都只有一个单独的执行点。
事实上,在单个程序内部是可以在同一时刻进行多种运算 的,这就是所谓的多线程(这与多任务的概念有相似之处)。
虽然各种操作系统(Unix/Linux、Windows系列等)都 支持多线程,但若要用C、C++或其他语言编写多线程程序 是十分困难的,因为它们对数据同步的支持不充分。
对多线程的综合支持是Java语言的一个重要特色,它提 供了Thread类来实现多线程。在Java中,线程可以认为是由 三部分组成的:
2、创建线程的方式
Thread类本身只是线程的虚拟CPU; 线程所执行的代码(或者说线程所要完成的功能)是通过 方法run( )(包含在一个特定的对象中)来完成的,方法run( ) 称为线程体。实现线程体的特定对象是在初始化线程时传递 给线程的。 在一个线程被建立并初始化以后,Java的运行时系统就自 动调用run( )方法,正是通过run( )方法才使得建立线程的目 的得以实现。 通常,run( )方法是一个循环,例如一个播放动画的线程要 循环显示一系列图片。有时,run( )方法会执行一个时间较长 的操作,例如下载并播放一个JPEG格式的电影。
1、多线程基本概念
文件 各种系统资源 输入输出装置 文件 各种系统资源 输入输出装置
数据区段
数据区段
程序区段
只有一个地方在执行
传统的进程
程序区段
同时有数个地方在执行
多线程的任务
1、多线程基本概念
多线程的优势:
多线程编程简单,效率高(能直接共享数据和资源,多进程不能) 适合于开发服务程序(如Web服务,聊天服务等) 适合于开发有多种交互接口的程序(如聊天程序的客户端,网络下
线程本身的数据通常只有寄存器数据,以及一个程序执 行时使用的堆栈,所以线程的切换比进程切换的负担要小。
1、多线程基本概念
进程:程序的一次执行。
程序代码 程序数据 程序资源
线程:进程中程序代码的一个执行序列。
程序调用堆栈 线程局部变量 可共享访问进程中的数据和资源 操作系统按线程来调度程序的执行