线程可以并发执行,但是在很多情况下,例如取票买票等操作,同时操作的时候会出现问题,必须有锁控制保护。
举例子解释两种方式
例如有两个消费者同时操作一个资源时(即同一个函数),假如函数为public void get(){}
此时需要对这个函数进行加锁操作
1、一种方式是把之前的函数改为public synchornized void get(){}
2、另一种方式是需要加锁的函数在另一个函数里面,例如
public void method(){
方法体
方法体
//需要加锁的方法体
synchronized(对象名){
}
方法体
}
这种方式较为灵活方便,不需要全部锁住method(),而是针对性地锁需要锁的方法。