多线程 (Thread线程)
多任务的实现方式:
基于进程(独享内存地址空间)
一个应用程序就是一个进程 进程是指一种“自包容”的运行程序,有自己的地址空间;
基于线程 (在进程内部共享内存地址空间)
线程是进程内部单一的一个顺序控制流。
通过以下两种方法创建Thread对象:
声明一个Thread类的子类,并覆盖run()方法。
class mythread extends Thread{
public voidrun(){/*覆盖该方法*/}
}
声明一个实现Runnable接口的类,并实现run()方法。
class mythread implements Runnable{
public voidrun(){/*实现该方法*/}
}
线程状态:
新线程(新建) new出thread对象
就绪 执行statrt()方法之后,执行run()方法之前。
运行---- (中断)
①由于优先级的关系,线程没有抢到cpu * min-1 默认-5 max-10
②使用sleep()使线程休眠 (使用sleep是线程休眠,不是中断。到了时间点,线程重新参与cpu的竞争)
③阻塞(I/O事件)。
④wait-notify机制
⑤挂起 yield()方法,线程已显示出让cpu控制权
死亡。
##线程同步
多线程安全性问题 :
描述:多个线程访问同一资源对象,可能会造成该资源对象数据混乱
解决:--同步(锁)--synchronized
效果:线程安全了,但效率低
同步:-问题-死锁:
①描述:当两个线程访问一对相互依赖的同步资源时,会出现死锁。
解决方案:wait--notify