第1章 多线程
测试类:
1.1 线程安全
如果说我们的多线程如果像单线程一样每次的运行结果都是一样的就说明安全了、
1.2 线程同步(线程安全处理Synchronized)
小复习:缓冲区
StringBuff都加用了同步方法,
StringBuilder没加,所以快,但不安全
安全,但是慢
因为if循环里排着队所以慢
java中提供了线程同步机制,它能够解决上述的线程安全问题。
线程同步的方式有两种:
l 方式1:同步代码块
l 方式2:同步方法
1.2.1 同步代码块
l 同步方法:在方法声明上加上synchronized
public synchronized void method(){
可能会产生线程安全问题的代码
}
把容易产生异常代码给包进去,如果一个线程没出来,另一个不能进去
1.2.2 同步方法
l 同步方法:在方法声明上加上synchronized
public synchronized void method(){
可能会产生线程安全问题的代码
}
同步方法中的锁对象是 this默认的
学反射的时候会学
l 静态同步方法: 在方法声明上加上static synchronized
public static synchronized void method(){
可能会产生线程安全问题的代码
}
静态同步方法中的锁对象是 类名.class
1.2.3 Lock接口
之前的锁都是一个代码走完之后把锁还回去才能下一个代码,但如果途中出现一个异常锁就回不去,也没法继续下一个代码了。所以这个Lock接口提供了获取锁,释放锁。
代码:
写在finally里就是如果出现问题就释放锁