网站开发和网页制作,兰州seo快速排名,电子商务主要是干嘛的,做网站售后好的公司前言#xff1a; 整理下学习笔记#xff0c;打好基础#xff0c;daydayup!!! 线程安全 多线程可以同时进行操作#xff0c;但如果是同时操作一个共享资源的时候#xff0c;可能会出现业务安全问题。 示例#xff1a;
小A和小B共用一个账户#xff0c;如果小A和小B同时取…前言 整理下学习笔记打好基础daydayup!!! 线程安全 多线程可以同时进行操作但如果是同时操作一个共享资源的时候可能会出现业务安全问题。 示例
小A和小B共用一个账户如果小A和小B同时取钱谁能够取走钱 在没有线程安全的情况下小A和小B都能够取走钱导致金额最终为负数。所以为了解决这一情况就需要解决线程安全问题
线程同步 线程同步就是解决线程安全的方案 线程同步的思想 让多个线程先后依次访问共享资源解决线程安全问题 线程同步的常见方案 使用加锁的方式。每次只允许一个线程加锁加锁后才能进入访问访问完毕后自动解锁然后其他线程才能再加锁进来 1同步代码块
作用把访问共享资源的核心代码给上锁以次保证线程安全。
格式
synchronized(同步锁){访问共享资源的核心代码
}
原理 每次只允许一个线程加锁后进入执行完毕后自动解锁其他线程才可以进来执行。
示例 注对于当前同时执行的线程来讲必须是同一个对象执行程序否则会出想bug。
2同步方法
作用把访问共享资源的核心方法给上锁以此保证线程安全
格式
修饰符synchronized 返回值类型 方法名称形参列表{操作共享资源的代码
} 原理每次只能一个线程进入执行完毕以后自动解锁其他线程才可以进来执行 3Lock锁 Lock是接口不能直接实例化可以采用它的实现类ReentrantLock来构建Lock锁对象 格式
private Lock 名称 new ReentrantLock();方法{
名称.lock();需要加锁的代码名称.unlock();}
示例 总结
同步代码块相对灵活但代码多时可观性较差同步方法相对死板但可观性较好Lock锁相比前两种方法更加灵活但操作比前两种更为复杂可观性较差。整理结束撒花