传智播客java基础加强班PPT---Java基础班讲义线程
合集下载
java基础ppt课件

03
封装
将对象的属性和方法封装 在类中,隐藏内部实现细 节,仅通过对外提供的接 口进行访问和操作。
继承
子类可以继承父类的属性 和方法,实现代码复用和 扩展。
多态
子类可以重写父类的方法 ,实现同一方法在不同对 象上的不同表现。
接口与抽象类
接口的定义
接口是一种引用类型,用于定义一组 方法的规范,但不包含方法的实现。
抛出自定义异常
在方法中,可以使用throw语句抛出自定义异常。抛出异常时,需要创建一个异 常对象并将其抛出。
异常处理的最佳实践
尽量避免异常
合理使用try-catch语句
保持异常的原子性
提供有意义的错误信息
应该尽量编写健壮的代码,避 免出现异常。例如,进行空值 检查、范围检查等。
不要过度使用try-catch语句, 只在必要时使用。对于可以预 见的异常情况,应该尽量在代 码中处理,而不是依赖于trycatch语句。
可以使用多个catch语句来处理不同类型的异常 ,每个catch语句处理一种特定的异常类型。
自定义异常
创建自定义异常类
可以通过继承Exception类或RuntimeException类来创建自定义异常类。继承 Exception类创建的是检查型异常,而继承RuntimeException类创建的是非检查 型异常。
丰富的API
Java语言提供了大量的API, 涵盖了IO、网络编程、数据库 操作、图形界面开发等方面。
Java语言的应用领域
Web开发
Java语言在Web开发领域有着广泛的应用 ,如Servlet、JSP、Struts等框架。
游戏开发
Java语言也可以用于游戏开发,如 Minecraft等游戏就是使用Java语言开发 的。
传智播客_Java培训_毕向东_Java基础[09-网络编程]
![传智播客_Java培训_毕向东_Java基础[09-网络编程]](https://img.taocdn.com/s3/m/20b96a31eefdc8d376ee32a5.png)
北京传智播客教育
—高级软件人才实作培训专家! 基本思路(服务端)
服务端需要明确它要处理的数据是从哪个 端口进入的。 当有客户端访问时,要明确是哪个客户 端,可通过accept()获取已连接的客户端 对象,并通过该对象与客户端通过IO流进 行数据传输。 当该客户端访问结束,关闭该客户端。
北京传智播客教育
—高级软件人才实作培训专家! 网络通讯要素
IP地址:InetAddress
• • •
网络中设备的标识 不易记忆,可用主机名 本地回环地址:127.0.0.1 主机名:localhost 用于标识进程的逻辑地址,不同进程的标识 有效端口:0~65535,其中0~1024系统使用或保留端口。 通讯的规则 常见协议:TCP,UDP
北京传智播客教育
—高级软件人才实作培训专家! 服务端
建立服务端需要监听一个端口
ServerSocket ss = new ServerSocket(9999); Socket s = ss.accept (); InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int num = in.read(buf); String str = new String(buf,0,num); System.out.println(s.getInetAddress().toString()+”:”+str); s.close(); ss.close();
北京传智播客教育
—高级软件人才实作培训专家! 接收端
在接收端,要指定监听的端口。
DatagramSocket ds = new DatagramSocket(10000); byte[] by = new byte[1024]; DatagramPacket dp = new DatagramPacket(by,by.length); ds.receive(dp); String str = new String(dp.getData(),0,dp.getLength()); System.out.println(str+"--"+dp.getAddress()); ds.close();
2013.7.15广州传智播客训练营基础加强部分PPT1

—高级软件人才实作培训专家
ref、out参数与params参数(*)
斱法参数默认是“复制传递” 使用ref和out可以实现“引用传递” ref不用赋值在外赋值、 out必须赋值在内赋值 params可以自动装配数组 参数必须在最后
北京传智播客教育
—高级软件人才实作培训专家 斱法的递归调用(*在三层项目中讲)
北京传智播客教育
—高级软件人才实作培训专家
面向对象 准备阶段(一)
1. 数组-> 变量
2. 枚举
北京传智播客教育
—高级软件人才实作培训专家 数组
一次语文测试后,老师让班长统计每一个学生的成绩幵 计算全班(全班共60人)的平均成绩,然后把所有成绩显 示出来. 如何声明变量? 好的解决斱法,使用数组.
数组的声明 数组的赋值与取值 常见问题:求平均值,求最大值,求和;(冒泡排序,后面讲)
北京传智播客教育
—高级软件人才实作培训专家 练习:
练习1:从一个整数数组中取出最大的整数 练习2:计算一个整数数组的所有元素的和。 练习3:将一个字符串数组输出为|分割的形式,比如“梅西|卡卡| 郑大世” 练习4:将一个整数数组的每一个元素迚行如下的处理:如果元素 是正数则将这个位置的元素的值加1,如果元素是负数则将这个位 置的元素的值减1,如果元素是0,则不变。 yooudaoyunbiji
北京传智播客教育
—高级软件人才实作培训专家 多维数组和交错数组
1.多维数组 Length;//多维数组所有元素的个数 GetLength(维度);//获得数组某个维度的大小
1.1一维数组:string[] strArr=new string[9]; 1.2二维数组:string[,] str2Arr=new string[2,3]; 1.3三维数组:string[,,] str3Arr=new string[2,3,4];(*) 2.交错数组:数组的数组:对象(又是一个数组对象)数组 2.1 string[][] strs = new string[2][]; //因为本质,所以不能设置第二个值 str[0]=new string[2]; str[1]=new string[5];
Java语言基础课件线程

➢ 使用步骤
1. 实现run方法 2. 把新线程要做的事写在run方法中 3. 创建自定义的Runnable的子类对象创建Thread对象, 传入Runnable 4. 调用start()开启新线程, 内部会自动调用Runnable的run()方法
实现Runnable的原理(了解)
两种方式的区别 (掌握)
子线程 主线程
线程实现的方式 (1) - 继承Thread
➢ 使用步骤 1. 定义类继承Thread 2. 重写run方法 3. 把新线程要做的事写在run方法中 4. 创建线程对象 5. 开启新线程, 内部会自动执行run方法 注:这种方式只能调用start,内部会调用run方法
线程实现的方式 (2) - 定义类实现Runnable接口
Java命令会启动java虚拟机,启动JVM,等于启动了一个应用程序,也就是启动了一个进程。该进程会自动启 动一个 “主线程” ,然后主线程去调用某个类的 main 方法。
➢ JVM的启动是多线程的吗
JVM启动至少启动了垃圾回收线程和主线程,所以是多线程的。 案例:垃圾回收和主线程打印的顺序不一样,多线程是抢占资源
多线程的概念
➢ 什么是线程
线程是程序执行的一条路径, 一个进程中可以包含多条线程 一个应用程序可以理解成就是一个进程 多线程并发执行可以提高程序的效率, 可以同时完成多项工作
➢ 多线程的应用场景
VNC同时共享屏幕给多个电脑 迅雷开启多条线程一起下载 QQ同时和多个人一起视频 服务器同时处理多个客户端请求
注意:案例中线程给个小睡眠时间
加入线程、礼让线程、设置线程优先级(了解)
join(), 当前线程暂停, 等待指定的线程执行结束后, 当前线程再继续 join(int), 可以等待指定的毫秒之后继续 yield() 让出cpu setPriority()设置线程的优先级
1. 实现run方法 2. 把新线程要做的事写在run方法中 3. 创建自定义的Runnable的子类对象创建Thread对象, 传入Runnable 4. 调用start()开启新线程, 内部会自动调用Runnable的run()方法
实现Runnable的原理(了解)
两种方式的区别 (掌握)
子线程 主线程
线程实现的方式 (1) - 继承Thread
➢ 使用步骤 1. 定义类继承Thread 2. 重写run方法 3. 把新线程要做的事写在run方法中 4. 创建线程对象 5. 开启新线程, 内部会自动执行run方法 注:这种方式只能调用start,内部会调用run方法
线程实现的方式 (2) - 定义类实现Runnable接口
Java命令会启动java虚拟机,启动JVM,等于启动了一个应用程序,也就是启动了一个进程。该进程会自动启 动一个 “主线程” ,然后主线程去调用某个类的 main 方法。
➢ JVM的启动是多线程的吗
JVM启动至少启动了垃圾回收线程和主线程,所以是多线程的。 案例:垃圾回收和主线程打印的顺序不一样,多线程是抢占资源
多线程的概念
➢ 什么是线程
线程是程序执行的一条路径, 一个进程中可以包含多条线程 一个应用程序可以理解成就是一个进程 多线程并发执行可以提高程序的效率, 可以同时完成多项工作
➢ 多线程的应用场景
VNC同时共享屏幕给多个电脑 迅雷开启多条线程一起下载 QQ同时和多个人一起视频 服务器同时处理多个客户端请求
注意:案例中线程给个小睡眠时间
加入线程、礼让线程、设置线程优先级(了解)
join(), 当前线程暂停, 等待指定的线程执行结束后, 当前线程再继续 join(int), 可以等待指定的毫秒之后继续 yield() 让出cpu setPriority()设置线程的优先级
java基础课件ppt下载

总结词
代码简洁、易于维护
详细描述
在开发简单计算器的过程中,学生需要注重代码的简洁性 和可维护性。通过编写简洁、易读的代码,学生可以养成 良好的编程习惯,提高代码质量。
网络聊天室
总结词
网络通信、实时交互
详细描述
网络聊天室是一个涉及网络通信和实时交互的Java实践项 目。通过开发网络聊天室,学生可以深入了解Java的网络 编程和多线程技术,提高编程技能。
面向对象编程基础
类与对象
类是对象的抽象,定义了对象的 属性和方法。对象是类的实例,
具有类所定义的特征和行为。
封装与继承
封装是将对象的属性和方法封装 在类中,隐藏内部实现细节,只 暴露必要的接口。继承是子类继 承父类的属性和方法,并可以扩
展或覆盖它们。
多态与抽象
多态是指一个接口可以有多种实 现方式,或者一个对象可以表现 出多种形态。抽象是通过声明方 法而不实现具体实现来定义接口
数据库连接与操作
总结词
SQL语句与事务管理
详细描述
介绍SQL语句的基本语法和常用操作,以及如何在Java中使 用JDBC进行事务管理。
数据库连接与操作
总结词
数据集与结果集处理
详细描述
介绍如何使用Java中的ResultSet和 DataBaseMetaData等类进行数据集 和结果集的处理,包括获取数据、遍 历结果集等操作。
网络编程
中的Socket编程,包括如何创建Socket对象、连接到远 程主机、发送和接收数据等,以及如何处理多线程和异常。
总结词
URL和URLConnection
网络编程
• 详细描述:介绍Java中的URL和URLConnection 类,以及如何使用它们进行网络资源的访问和数 据传输。
代码简洁、易于维护
详细描述
在开发简单计算器的过程中,学生需要注重代码的简洁性 和可维护性。通过编写简洁、易读的代码,学生可以养成 良好的编程习惯,提高代码质量。
网络聊天室
总结词
网络通信、实时交互
详细描述
网络聊天室是一个涉及网络通信和实时交互的Java实践项 目。通过开发网络聊天室,学生可以深入了解Java的网络 编程和多线程技术,提高编程技能。
面向对象编程基础
类与对象
类是对象的抽象,定义了对象的 属性和方法。对象是类的实例,
具有类所定义的特征和行为。
封装与继承
封装是将对象的属性和方法封装 在类中,隐藏内部实现细节,只 暴露必要的接口。继承是子类继 承父类的属性和方法,并可以扩
展或覆盖它们。
多态与抽象
多态是指一个接口可以有多种实 现方式,或者一个对象可以表现 出多种形态。抽象是通过声明方 法而不实现具体实现来定义接口
数据库连接与操作
总结词
SQL语句与事务管理
详细描述
介绍SQL语句的基本语法和常用操作,以及如何在Java中使 用JDBC进行事务管理。
数据库连接与操作
总结词
数据集与结果集处理
详细描述
介绍如何使用Java中的ResultSet和 DataBaseMetaData等类进行数据集 和结果集的处理,包括获取数据、遍 历结果集等操作。
网络编程
中的Socket编程,包括如何创建Socket对象、连接到远 程主机、发送和接收数据等,以及如何处理多线程和异常。
总结词
URL和URLConnection
网络编程
• 详细描述:介绍Java中的URL和URLConnection 类,以及如何使用它们进行网络资源的访问和数 据传输。
传智播客_Java培训_毕向东_Java基础[06-集合]
![传智播客_Java培训_毕向东_Java基础[06-集合]](https://img.taocdn.com/s3/m/ff6375df6f1aff00bed51e70.png)
北京传智播客教育
—高级软件人才实作培训专家! 基本数据类型对象包装类
将基本数据类型封装成对象的好处在于可以在 对象中定义更多的功能方法操作该数据。 常用的操作之一:用于基本数据类型与字符串 之间的转换。 例:Integer的parseInt方法,intValue方法。 例程
集合框架的构成及分类
北京传智播客教育
—高级软件人才实作培训专家!
集合框架中的常用接口
Collection接口有两个子接口: List(列表) ,Set(集)
List:可存放重复元素,元素存取是有序的。 Set:不可以存放重复元素,元素存取是无序 的。
北京传智播客教育
北京传智播客教育
—高级软件人才实作培训专家! 基本数据类型对象包装类新特性
JDK1.5以后,简化了定义方式。
• Integer x = new Integer(4);可以直接写成 • Integer x = 4;//自动装箱。 • x = x + 5;//自动拆箱。通过intValue方法。
北京传智播客教育
—高级软件人才实作培训专家! 集合框架中的工具类
Collections
• 对集合进行查找 • 取出集合中的最大值,最小值 • 对List集合进行排序 • ……
Arrays
• 将数组转成List集合 • 对数组进行排序 • 对数组进行二分查找
北京传智播客教育
返回值类型 函数名(参数类型… 形式参数) { 执行语句; } 其实接收的是一个数组,可以指定实际参数 个数。
北京传智播客教育
—高级软件人才实作培训专家!
Java 预热班讲义
—高级软件人才实作培训专家! 基本数据类型对象包装类
将基本数据类型封装成对象的好处在于可以在 对象中定义更多的功能方法操作该数据。 常用的操作之一:用于基本数据类型与字符串 之间的转换。 例:Integer的parseInt方法,intValue方法。 例程
集合框架的构成及分类
北京传智播客教育
—高级软件人才实作培训专家!
集合框架中的常用接口
Collection接口有两个子接口: List(列表) ,Set(集)
List:可存放重复元素,元素存取是有序的。 Set:不可以存放重复元素,元素存取是无序 的。
北京传智播客教育
北京传智播客教育
—高级软件人才实作培训专家! 基本数据类型对象包装类新特性
JDK1.5以后,简化了定义方式。
• Integer x = new Integer(4);可以直接写成 • Integer x = 4;//自动装箱。 • x = x + 5;//自动拆箱。通过intValue方法。
北京传智播客教育
—高级软件人才实作培训专家! 集合框架中的工具类
Collections
• 对集合进行查找 • 取出集合中的最大值,最小值 • 对List集合进行排序 • ……
Arrays
• 将数组转成List集合 • 对数组进行排序 • 对数组进行二分查找
北京传智播客教育
返回值类型 函数名(参数类型… 形式参数) { 执行语句; } 其实接收的是一个数组,可以指定实际参数 个数。
北京传智播客教育
—高级软件人才实作培训专家!
Java 预热班讲义
Java基础ppt课件

Internet迅猛发展 Java语言正式问世 被美国著名杂志PC Magazine 评为1995年十大优 秀科技产品之一
推出了Java2平 台。性能上有所 提高,而且对 Java的基本模式 进行了完善,并 提供了更为丰富 的API
完整最新ppt基础培训
3
Java2 的版本划分
J2ME
J2SE
Java 2
子类
继承部分
个性部分
完整最新ppt基础培训
33
单重继承与多重继承
❖单重继承:一个子类只有一个唯一确定的父类
▪ 单重继承所构成的类的关系结构是一棵树
❖多重继承:一个子类可以有多个不同的父类
▪ 多重继承所构成的类的关系结构是一个格
❖Java语言仅支持单重继承
完整最新ppt基础培训
34
继承的作用
❖使软件系统具有开放性 ❖更好地进行抽象与分类 ❖实现代码的复用 ❖提高可维护性
❖Java虚拟机主要由五个部分组成:指令系统、 寄存器、栈、存储区、碎片回收区
❖解释和执行Java程序编译后产生的字节码
完整最新ppt基础培训
6
Java程序相关问题——Java API
Java程序 Java API
Java虚拟机
操作系统 硬件平台
❖ Java API是Java系统提供的预先定义好的软件组件的集 合,它们提供了许多可供程序员调用的常用功能
消息来实现的
对象 A
消息
对象B
完整最新ppt基础培训
27
消息的组成
❖消息的目的对象 ❖要执行的方法的名称 ❖方法所需参数
你
换档(低档)
你的车
完整最新ppt基础培训
28
消息的性质
传智播客java基础加强班PPT---JavaAPI 集合

北京传智播客教育
double sin (double numvalue) double cos (double numvalue) double pow (double a, double b) double sqrt (double numvalue) int abs (int numvalue) double ceil (double numvalue) double floor (double numvalue) int max(int a, int b) int min(int a, int b)
sb.append("**"); //追加字符串 追加字符串
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! StringBuffer的用武之地
从控制台接收课程信息,不断累加直到输入“ 从控制台接收课程信息,不断累加直到输入“#” 键结束, 键结束,并输出全部课程信息
方法 public int indexOf(int ch) public int indexOf(String value) public int lastIndexOf(int ch) public int lastIndexOf(String value)
说明 搜索第一个出现的字符 ch(或字符串value) 搜索最后一个出现的字 符ch(或字符串value)
输入的“Java”和“java”代表同一课程,如何解决? • 使用equalsIgnoreCase()方法 • 结合toUpperCase()或toLowerCase()
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 字符串比较
使用equalsIgnoreCase()方法解决
double sin (double numvalue) double cos (double numvalue) double pow (double a, double b) double sqrt (double numvalue) int abs (int numvalue) double ceil (double numvalue) double floor (double numvalue) int max(int a, int b) int min(int a, int b)
sb.append("**"); //追加字符串 追加字符串
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! StringBuffer的用武之地
从控制台接收课程信息,不断累加直到输入“ 从控制台接收课程信息,不断累加直到输入“#” 键结束, 键结束,并输出全部课程信息
方法 public int indexOf(int ch) public int indexOf(String value) public int lastIndexOf(int ch) public int lastIndexOf(String value)
说明 搜索第一个出现的字符 ch(或字符串value) 搜索最后一个出现的字 符ch(或字符串value)
输入的“Java”和“java”代表同一课程,如何解决? • 使用equalsIgnoreCase()方法 • 结合toUpperCase()或toLowerCase()
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 字符串比较
使用equalsIgnoreCase()方法解决
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
final String getName( ) final boolean isAlive() final void setName(String name) final void join( ) throws InterruptedException
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! Thread 类中的重要方法 2-2
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 创建线程 2-1
• 通过以下两种方法创建 Thread 对象: 对象: - 声明一个 Thread 类的子类,并覆盖 run() 方法。 类的子类, 方法。
class mythread extends Thread { public void run( ) {/* 覆盖该方法*/ } 覆盖该方法 该方法*/ }
- 声明一个实现 Runnable 接口的类,并实现 run() 接口的类, 方法。 方法。
class mythread implements Runnable{ public void run( ) {/* 实现该方法*/ } 实现该方法*/ } 北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 创建线程 2-2
获得当前线程, 获得当前线程, 即主线程
class Mythread extends Thread { public static void main(String args[]) { 改变线程 Thread t= Thread.currentThread(); 的内部名 System.out.println("当前线程是: "+t); 称 t.setName("MyJavaThread"); System.out.println("当前线程名是: "+t); try { for(int i=0;i<3;i++) { 输出每个数后 暂停1500 1500毫秒 暂停1500 Thread.sleep(1500); System.out.println(i);毫秒 } } catch(InterruptedException e) { System.out.println("主线程被中断"); } } 北京传智播客教育 }
北京传智播客教育
或者使用 implements Runnable
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 线程的状态 4-1
• •
•
•
新建 (Born) : 新建的线程处于新建状态 就绪 (Ready) : 在创建线程后,它将处于 就绪状态,等待 start() 方法被调用 运行 (Running) : 线程在开始执行时进入 运行状态 睡眠 (Sleeping) : 线程的执行可通过使用 sleep() 方法来暂时中止。在睡眠后,线 程将进入就绪状态
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 主线程
• 在Java程序启动时,一个线程立刻运行, 程序启动时,一个线程立刻运行, 程序启动时 该线程通常称为程序的主线程。 该线程通常称为程序的主线程。 • 主线程的重要性体现在两个方面: 主线程的重要性体现在两个方面:
方法
final boolean isDaemon( ) final void setDaemon(boolean on) static void sleep( ) void start( ) static int activeCount( ) static void yield()
用途
检查线程是否为精灵线程 根据传入的参数,将线程标记为精灵线程 或用户线程 用于将线程挂起一段时间 调用run( )方法启动线程,开始线程的执行 返回激活的线程数
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 创建线程示例
class MyThread1 extends Thread { public static void main(String args[]) { Thread t= Thread.currentThread(); System.out.println("主线程是: "+t); MyThread1 ex = new MyThread1(); ex.start(); } public void run() { System.out.println("子线程是:"+this); } }
—高级软件人才实作培训专家! 高级软件人才实作培训专家! Thread 类中的重要方法 2-1
方法
static int enumerate(Thபைடு நூலகம்ead [ ] t)
用途
将线程所在的线程组及其子组中所有活 动的线程复制到指定数组中,返回线程 的个数 返回线程的名称 如果线程是激活的,则返回 true 将线程的名称设置为由name指定的名称 等待线程结束
–它是产生其他子线程的线程。 它是产生其他子线程的线程。 它是产生其他子线程的线程 –通常它必须最后完成执行,因为它执行各 通常它必须最后完成执行, 通常它必须最后完成执行 种关闭动作。 种关闭动作。
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 主线程示例
北京传智播客教育
多任务处理有两种类型: 多任务处理有两种类型: - 基于进程 - 基于线程
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 基于线程的多任务处理的优点
• 基于线程所需的开销更少
– 在多任务中,各个进程需要分配它们自己独 在多任务中, 立的地址空间 – 多个线程可共享相同的地址空间并且共同分 享同一个进程
• 要触发一个新线程,使用 start() 方法,如: 要触发一个新线程, 方法,
Mythread t = new Mythread(); t.start();
• 在调用 start() 方法时,将创建一个新的控 方法时, 制线程, 方法。 制线程,接着它将调用 run() 方法。 • run() 方法中的代码定义执行线程所需的功 能。
• 缺省优先级为 NORM_PRIORITY • 有关优先级的方法有两个: 有关优先级的方法有两个:
- final void setPriority(int newp) : 修改线程的当前优先级 - final int getPriority() : 返回线程的优先级
北京传智播客教育
• 进程间调用涉及的开销比线程间通信多 • 线程间的切换成本比进程间切换成本低
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 多线程
• 多线程
–在Java中,一个应用程序可以包含多个线程。 在 中 一个应用程序可以包含多个线程。 每个线程执行特定的任务, 每个线程执行特定的任务,并可与其他线程并 发执行 –多线程使系统的空转时间最少,提高 多线程使系统的空转时间最少, 多线程使系统的空转时间最少 提高CPU利用 利用 率 –多线程编程环境用方便的模型隐藏 多线程编程环境用方便的模型隐藏CPU在任务 多线程编程环境用方便的模型隐藏 在任务 间切换的事实
使正在执行的线程临时暂停,并允许其他线程执行
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 线程优先级
• Java 中的线程优先级是在 Thread 类中定义 的常量
- NORM_PRIORITY : 值为 5 - MAX_PRIORITY : 值为 10 - MIN_PRIORITY : 值为 1
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 线程状态的示例
class ThreadStateDemo extends Thread { Thread t; public ThreadStateDemo() { t=new Thread(this); System.out.println ("线程 t 为新建!"); System.out.println ("线程 t 为就绪!"); t.start(); } public void run() { try { System.out.println ("线程 t 在运行!"); t.sleep(500); public static void main(String 在短时间睡眠后重新运行!"); System.out.println("线程 t args[]) { new ThreadStateDemo(); } catch (InterruptedException IE) { } System.out.println("线程被中断"); } } 北京传智播客教育 }
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 线程的状态4-2
• 等待 (Waiting) : 如果调用了 wait() 方法, 方法, 线程将处于等待状态。 线程将处于等待状态。用于在两个或多 个线程并发运行时。 个线程并发运行时。 • 挂起 (Suspended) : 在临时停止或中断线 程的执行时,线程就处于挂起状态。 程的执行时,线程就处于挂起状态。 • 恢复 (Resume) : 在挂起的线程被恢复执行 可以说它已被恢复。 时,可以说它已被恢复。
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家! 线程状态4-3
• 阻塞 (Blocked) – 在线程等待一个事件时(例 在线程等待一个事件时( 如输入/输出操作),就称其处于阻塞状态 输出操作),就称其处于阻塞状态。 如输入 输出操作),就称其处于阻塞状态。 • 死亡 (Dead) – 在 run() 方法已完成执行或其 stop() 方法被调用之后,线程就处于死亡状 方法被调用之后, 态。