线程的基本概念
程序的概念: 程序就是一个严格有序的指令集合,它本身没有任何运行的含义,它只是一个静态的实体。
进程的概念: 指的是程序在某个数据集上的执行。 进程是一个动态的实体,它有着自己的生命周期,它因创建而产生,因调度而运行,因等待资源或者事件而被处于等待状态,因完成任务而被撤销。
线程的概念: 线程就是一个程序里边不同的执行路径。
线程的创建和启动
创建进程时,能使用Runnable接口创建,就不要使用从Thread类继承的方法来创建。
线程的调度和优先级
线程的基本方法:
Thread.setName(String name) 设置当前线程的名字
Thread.currentThread() 返回对当前正在执行的线程对象的引用。
Thread.getName() 返回当前线程的名字。
线程控制的基本方法:
线程的优先级:
线程的优先级是用数字来表示,范围从1到10.。
主线程的缺省(默认)优先级是5,子线程的优先级默认与其父线程相同。
线程的休眠:
重写的run方法不能抛出异常, 因为重写方法抛出异常的范围不能大于被重写方法抛出的异常范围。
yield方法 是线程的让步。 让出CPU,给其他线程执行机会。 让运行中的线程主动放弃当前获得的CPU处理机会,但不是使该线程阻塞,而是使之转入就绪状态。
join方法 是线程的串行化。 如果在一个线程运行的过程中要用到另一个线程的运行结果,则可进行线程的串行化处理。 (就是暂停当前正在执行 t.join() 的线程,直到 t 所对应的线程运行终止之后,当前线程才会获得继续执行的机会)
public static void join() throws InterruptedException
线程的挂起和恢复:
线程的同步问题
Synchronized 关键字
Synchronized 可以用来修饰 一个方法 或者 一个方法内部的某个代码块。
如果两个方法都改了同一个值,那么两个方法都应该加synchronized, 或者哪个方法修改了值,那个方法就应该加 synchronized(同步)。