特殊操作流
properties
- 是一个Map体系的集合类
- properties可以保存到流中或者在流中加载
常用方法:
//存储元素Object
pro.put("001","张三");
//添加String
p.setProperty("001", "张三");
//指定键搜索属性
p.getProperty("001")
//该列表返回一个不可修改的键集,键及其对应的值是字符串
Set<String> names = p.stringPropertyNames();
多线程
进程
- 正在运行的程序
- 系统进行资源分配和调用的独立单位
- 每一个进程都有自己的内存空间和系统资源
线程
- 是进程中的单个顺序控制流,是一条执行路径
- 单线程:一个进程只有一条执行路径
- 多线程:一个进程只有多条执行路径
多线程的实现方式:
继承Thread类,定义一个MyThread类继承Thead类,在MyThread中重写run()方法,创建MyThread类的对象
public class MyThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 70; i++) {
System.out.println(i);
}
}
}
public static void main(String[] args) {
MyThread my1 = new MyThread();
MyThread my2 = new MyThread();
//线程开始执行,java虚拟机调用此线程的run方法
my1.start();
my2.start();
}
- run()方法:封装线程执行的代码,之间调用,相当于普通方法调用
- strategic()方法:启动线程,java虚拟机调用此线程的run方法
设置和获取线程名称
public MyThread() {
}
//重写构造函数,写一个带参构造方法
public MyThread(String name) {
super(name);
}
MyThread my1 = new MyThread("符集");
MyThread my2 = new MyThread("高忒");
//线程开始执行,java虚拟机调用此线程的run方法
my1.start();
my2.start();
或者
//Thread.currentThread()返回正在执行的线程对象
System.out.println(Thread.currentThread().getName());
线程调度
两种调度模型
- 分时调度模型:线程轮流使用CPU,平均分配每个线程占用CPU的时间片。
- 抢占式调度模型:优先让优先级高的线程使用CPU,如果优先级相同,会随机选一个,优先级高的线程获得CPU时间较长。
- java使用抢占式调度模型。
// System.out.println(Thread.MAX_PRIORITY);//最大优先级10
// System.out.println(Thread.MIN_PRIORITY);//最小优先级1
// System.out.println(Thread.NORM_PRIORITY);//默认优先级5
//设置优先级
th1.setPriority(9);
th2.setPriority(5);
th3.setPriority(1);
优先级高仅代表获取CPU时间片的几率高。