collections 和collection的区别
collection 是接口 保存单值的规范
collections 是类 是给collection提供帮助的工具类
线程
线程是程序执行的最小单位
进程是系统进程资源分配和系统调度的最小单位 是动态的
程序是静态的
同一个时间点只能执行一个进程或者线程
同一个时间段能执行多个进程或者线程
线程必须通过进程启动不能单独存在
线程三要素
cpu 运行 线程
代码 线程运行过程中的代码块
数据 局部变量则多线程不共享
extends Thread 后实例变量不共享 静态变量共享
implements Runnable 之后实例变量共享 静态变量共享
Thread中的方法
getName()获取当前线程名字
sleep(long) 休眠
static currentThread()获取当前执行线程
join()等待线程执行结束 在那个线程调用就谁等待 谁调用该方法谁就等待
interrupt() 中断阻塞中的进程
isInterrupted()判断是否被中断
interred()清空中断信息
线程的状态
新建状态
就绪状态
运行状态
等待睡眠阻塞状态
死亡状态
线程的并发访问
synchronized(共享区){临界区}
共享区 多线程同时操作一个对象
临界区 多线程对共享区进行操作的代码区
并发线程上加了同步锁之后就是线程互斥
sleep 不会释放对象锁
wait() 等待 释放对象锁
notify() 通知一个
notifyAll() 通知所有
死锁 给多个对象加对象锁时 将加锁顺序一致 避免死锁
Thread中的方法
yield()让当前线程让出cpu 给比自己高的线程执行 如果没有 就没有效果
setPrioirty(int)设置线程优先级1 -10
高低不一定有用 得看cpu调度
IO流 操纵数据
输入流 输出流 字节类 字符类
FileInputStream/out 针对文件字节输入输出流
BufferedInput/Output Stream 带缓冲的字节流
调用flush()增强输入输出流性能
close()关闭流
三种读法
1 int read ()
//从输入流读取一个8位字节 结尾返回-1
2 int read(byte[] b)
//读取若干个字节保存到b中返回读取到的整数个数 如果没有则返回-1
3 int read(byte[] b,int off,int len)
//读取若干字节 off表示开始位置 len 个数 返回读取的个数 末尾返回 -1
三种写法
void write(int b):向输出流写入一个字节;
b)void write(byte[] b): 把参数b指定的字节数组中的所有字节写到输出流;
c)void write(byte[] b, int off, int len): 把参数b指定的字节数组中的所
有字节写到输出流,参数off指定字节数组的起始下标,从这个位置开始
输出由参数len指定数目的字节; 。
int available() 返回可以从输入流读取的字节数目
skip(long)从输入流跳过参数n指定数目的字节
markSupported判断是否支持重复读入数据
mark 从流当前位置开始设置标记
reset 使输入流重新定位到刚刚做了标记的起始位置
IO操作步骤
创建合适的流
创建流对象
进行读写操作
关闭资源