一、 多线程的通信
■ 因为线程的死锁,从而引发要多线程的通信
死锁:每个线程不释放自己拥有的资源,却申请别的线程拥有的资源,会造成死锁问题
■ 线程间的通信:等待通知机制
■ 每一个对象都有一个等待队列。
线程t1对O调用wait方法,△必须是在对O加锁的同步代码块中。
结果:1、线程t1会释放它拥有的所有的锁标记
2、会进入O的等待队列,开始阻塞
线程t2对o调用notify/notifyAll方法时,也必须是在对o加锁的同步代码块中。结果:会从o的等待队列中释放一个/全部线程
■
▲ 初始状态 ▲阻塞状态 ▲终止状态
\ / ┍ 1 ┓
\ / \ 2sleep /
\start / \ 3join /stop
\ / \ /
┙ ┕ \ /
▲ 可运行状态 _ _ _ OS选中 _ _ _\ ▲运行状态
(只缺CPU) \ CPU到期或调用yield
┍ / \
\ / \wait
\ Synchronized/ \
\ / \
\ / \
\ / \
\ ┕ ┙
▲ 锁池状态 <------ ▲等待队列
notify/notifyall
练习
1、利用线程的通信机制,用两个线程打印以下的结果:
1 2 A 3 4 B 5 6 C 7 8 D ... 49 50 Y 51 52 Z
2、思考为什么调用wait()方法之前用while判断,而不用if判断
currentThread
public static Thread currentThread()返回对当前正在执行的线程对象的引用。
二、 IO流
(一)java.io Class File
■ 一个File对象代表了一个文件或目录
File f=new File("1.txt");//在堆里申请了个File对象的空间
f.createNewFile();//创建了个文件对象,不会产生文件,只有操作File对去创建文件
f.delete();
f.mkdir();
System.out.println(f.getName());//相对路径
System.out.println(f.getAbsolutePath());//绝对路径
■ File[] listFiles(FileFilter filter)
返回表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组,这些路径名满足特定过滤器。
java.io
接口 FileFilter
accept
boolean accept(File pathname)
File pathname是指被遍历目录中所有文件和目录
作业:打印目录下所有的.java文件,包括子目录(提示:递归)
(二)
■ io流是用于JVM和数据源之间交换数据
| | | |
| | | |
| | | |
| --------------- DB |
| JVM 流 net |
| --------------- file|
| | | |
| | | |
■ 一个流也是个对象
流的分类:输入流、输出流
字节流、字符流
节点流、过滤流 (功能,过滤流是给其它增加个功能,本身不传输数据)
■ 装饰模式
武器
/ \
/ \
枪(节点流) 零件
/|\ \
/ | \ \ \ \
瞄 消 M P S L
(过滤流)
(三)字节输入流
java.io
类 InputStream
字节输入流的所有类的超类
■ java.io
类 FileInputStream
public FileInputStream(String name)
throws FileNotFoundException//文件不存在会抛异常
FileInputStream(File file)
FileInputStream(FileDescriptor fdObj)
■ FileInputStream中方法介绍
void close()
关闭此文件输入流并释放与此流有关的所有系统资源
int read()
从此输入流中读取一个数据字节。
返回下一个数据字节;如果已到达文件末尾,则返回 -1。
int read(byte[] b)
从此输入流中将最多 b.length 个字节的数据读入一个字节数组中。
返回:读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
int read(byte[] b, int off, int len)
从此输入流中将最多 len 个字节的数据读入一个字节数组中。
分享到:
相关推荐
【Java 考试复习指南】 1. Java 编译过程:Java 源程序文件(扩展名为 .java)经过Java编译器编译后,会生成字节码文件(扩展名为 .class)。这是Java程序运行的基础,因为JVM(Java虚拟机)执行的是字节码。 2. ...
这个“JAVA复习ppt”很可能是华南理工大学为了帮助学生系统复习Java编程知识而制作的教学材料。Java的特点包括跨平台性、简单性、面向对象、健壮性和安全性,这些特性使得它成为开发桌面应用、企业级应用、移动应用...
根据提供的信息,我们可以总结出以下关于《Java语言程序设计基础第十版》第十二...以上是对《Java语言程序设计基础第十版》第十二章中部分复习题答案的详细解释,希望能帮助读者更好地理解Java中的异常处理及相关概念。
Java 语言程序设计基础课后复习题答案第十三章 本部分内容将详细讲解 Java 语言程序设计基础课后复习题答案第十三章中的知识点。 一、Java 基础知识 1.1 在 Java 中,什么是可变长参数?答:在 Java 中,使用可变...
【Java复习题库知识点详解】 Java是一种面向对象的高级编程语言,它的主要特点包括:面向对象、跨平台、高性能和丰富的类库。在Java中,程序的基本单位是类,而不是文件,因此选项B描述错误。Java语言区分大小写,...
JAVA理论知识基础复习 JAVA理论知识基础复习是指对JAVA语言的基础知识进行复习和总结,本文将涵盖构造方法、new关键字、方法的重载、特殊变量this、static定义常量、继承、方法的重写、特殊变量super、多态性等相关...
Java复习材料。包括《Java技术及其应用》(第二版)(高等教育出版社)的 第6章 java语言中的面向对象特性 第7章 数组和向量 第8章 字符串处理 第10章 异常处理 第11章 输入输出处理 第13章 线程 第14\15章 ...
13. **Java复习第十三天**:最后可能会讲解一些高级话题,如集合框架的高级特性和并发库(如ConcurrentHashMap、ExecutorService)的使用,或者JVM内存模型和垃圾回收机制。 通过这些复习笔记,读者可以逐步建立起...
《Java语言程序设计第10版(基础篇)》是一本深入浅出的Java编程教材,旨在帮助初学者掌握这门强大的面向对象编程语言。复习题答案提供了对每一章节核心概念的检验和巩固,帮助读者确认对每个主题的理解是否到位。...
### Java基础复习知识点详解 #### 一、Java语言特点 - **高级编程语言**:Java是一种面向对象的高级编程语言,具有以下特点: - **简单性**:语法简洁,易于学习。 - **结构中立**:独立于硬件结构,能够在各种...
这个压缩包中包含了课程的源码实例和每日课程的复习文档,为学习者提供了十五天的学习材料。 1. **Java基础**:学习Java首先要了解其基本语法,包括数据类型、变量、运算符、控制结构(如if语句、for循环、while...
Java基础知识总结 一、 Java基础知识 Java是一种高速、安全、可靠的编程语言,用于开发大型商业应用程序。Java语言的设计目标是“Write Once, Run Anywhere”,即一次编写,到处运行。 二、 变量、数据类型和...
14. **反射机制**:Java的反射API允许程序在运行时动态访问类、接口、字段和方法的信息,实现动态调用方法,增强了程序的灵活性。 15. **枚举类型**:Java 5引入了枚举,用于表示固定集合的值。枚举类可以拥有方法...
Java语言程序设计是计算机科学领域中的重要课程,其第八版的复习题答案涵盖了广泛的Java编程概念和技术。在学习和掌握Java编程时,了解并解决这些复习题的答案对于深入理解Java的核心概念至关重要。以下是对相关知识...
根据提供的文件信息,我们可以整理出以下关键的Java知识点: ### 1. 访问修饰符 public, private, protected, default - **public**: 公有访问级别,可以在任何地方被访问。 - **protected**: 受保护访问级别,...
Java编程语言是信息技术学院学生的重要学习内容之一,尤其在期末阶段,复习题的掌握对于考试成绩至关重要。"北师珠信院Java期末考试复习题.zip"这个压缩包包含了从ch01到ch18的章节练习,覆盖了Java语言的各个方面,...