多线程
多任务
基于进程: 每个独立的"自包容的"应用程序,有自己的地址空间,进程:拥有独立的内存空间,耗费切换成本高
允许同时运行两个或多个程序。
多任务处理环境中,线程是最小的处理单位。
基于线程:进行当中产生独立的新路径,是进程内部单一的顺序控制流,
基于线程所需的开销更少
在多任务中,各个进程需要分配他们自己独立的地址空间
多任务当中,可以共享相同的地址空间,并且共同分享同一个进程
进程间调用设计的开销避险城建通信多
线程间的切换成本比进程间切换成本低
线程安全:当多个线程同时操作统一资源的时候
加锁机制————同步锁(关键字:synchronized)
解决线程安全性问题,同步的方式:
1、在资源身上加同步锁——称之为"同步方法"
public synchronized void display(string name){
for(int i=0;i<5;i++){
system.out.println()
}
}
2、资源不加锁,而是在线程的调用处进行加"同步锁"——称之为”同步块“。
synchronized(this.rs){
this.rs.display(this.getName());
}
死锁:当两个线程循环依赖于一对同步对象时将发生死锁。死锁很少发生,一旦发生就很难调试。
线程之间的通信机制(wait-notify机制)
使用wait()、notify()、notifyAll()三个方法,是作为Object类中的final方法实现的。仅在synchronized方法中才能被调用。