一,代码锁
异步 并发,各干各的 (比如:一群人同时上卡车)
同步 步调一致的处理 (比如:一群人排队上公交车)
多个线程并发读写同一个资源的时候会发生“线程并发安全问题”,如果保证多线程同步访问临界资源,就可以解决;
常见的临界资源: 多线程共享实例量
静态公共变量
使用同步代码块解决线程并发安全问题 synchrenizde(同步监视器){
}
同步监视器:1,是一个任意对象的实例; 2,是一个多线程之间的互斥的锁机制
多线程要使用同一个“监视器”对象实现同步互斥
synchronizend(this){
}
如果方法的全部过程需要同步,可以简单使用 Synchronized 修饰方法;
相当于整个方法的 synchronized(this)
尽量减少同步范围,提高并发效率
二,多线程(Thread)
线程是最小的运行单位,进程可以包含多个线程;
rum 方法不能参加参数 多线程是同时()执行;
状态1,new
状态2,Start---rum rum nable可运行状态
状态3,死亡结束(dead)
状态4,Running 运行状态
注释:普通线程程序员没办法干预,由CPU决定