当前位置: 首页 > news >正文

jsp网站开发系统乐陵seo网站

jsp网站开发系统,乐陵seo网站,网站制作公司小邓,备案网站多长时间synchronized 和 Lock 都是 Java 中用于实现线程同步的机制#xff0c;它们都可以保证线程安全。 # synchronized 介绍与使用 synchronized 可用来修饰普通方法、静态方法和代码块#xff0c;当一个线程访问一个被 synchronized 修饰的方法或者代码块时#xff0c;会自动获…synchronized 和 Lock 都是 Java 中用于实现线程同步的机制它们都可以保证线程安全。 # synchronized 介绍与使用 synchronized 可用来修饰普通方法、静态方法和代码块当一个线程访问一个被 synchronized 修饰的方法或者代码块时会自动获取该对象的锁其他线程将会被阻塞直到该线程执行完毕并释放锁。这样就保证了多个线程对共享资源的操作的互斥性从而避免了数据的不一致性和线程安全问题。 synchronized 基本使用如下 public class SynchronizedDemo {private int count 0;public synchronized void increment() {count;}public synchronized int getCount() {return count;} }此时我们再使用多线程调用上面类的 increment 或 getCount 时就不会出现线程安全问题了如下代码所示 public class SynchronizedDemoTest {public static void main(String[] args) {SynchronizedDemo demo new SynchronizedDemo();Runnable r () - {for (int i 0; i 1000; i) {demo.increment();}};Thread t1 new Thread(r);Thread t2 new Thread(r);t1.start();t2.start();try {t1.join();t2.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Count: demo.getCount());} }Lock 介绍与使用 Lock 是一种线程同步的机制它与 synchronized 相似可以用于控制对共享资源的访问。相比于 synchronizedLock 的特点在于更加灵活支持更多的操作。 Lock 接口定义了以下方法 lock()获取锁如果锁已被其他线程占用则阻塞当前线程。tryLock()尝试获取锁如果锁已被其他线程占用则返回 false否则返回 true。tryLock(long timeout, TimeUnit unit)尝试获取锁在指定的时间范围内获取到锁则返回 true否则返回 false。unlock()释放锁。 相比于 synchronizedLock 的优点在于 粒度更细synchronized 关键字只能对整个方法或代码块进行同步而 Lock 可以对单个变量或对象进行同步。支持公平锁synchronized 不支持公平锁而 Lock 可以通过构造函数指定锁是否是公平锁。支持多个条件变量Lock 可以创建多个条件变量即多个等待队列。 Lock 的实现类有很多比较常用的有 ReentrantLock 和 ReentrantReadWriteLock。 需要注意的是使用 Lock 时需要手动获取和释放锁否则会导致死锁等问题。因此一般来说建议使用 try-finally 语句块来确保锁的正确释放。例如 import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class Counter {private int count 0;private Lock lock new ReentrantLock();public void increment() {// 加锁lock.lock();try {count;} finally {// 释放锁lock.unlock();}}public void decrement() {// 加锁lock.lock();try {count--;} finally {// 释放锁lock.unlock();}}public int getCount() {return count;} }总结synchronized VS Lock synchronized 和 Lock 主要的区别有以下几个方面 锁的获取方式synchronized 是隐式获取锁的即在进入 synchronized 代码块或方法时自动获取锁退出时自动释放锁而 Lock 需要程序显式地获取锁和释放锁即需要调用 lock() 方法获取锁调用 unlock() 方法释放锁。锁的性质synchronized 是可重入的互斥锁即同一个线程可以多次获得同一把锁而且锁的释放也只能由获得锁的线程来释放Lock 可以是可重入的互斥锁也可以是非可重入的互斥锁还可以是读写锁。锁的粒度synchronized 是以代码块和方法为单位进行加锁和解锁而 Lock 可以精确地控制锁的范围可以支持多个条件变量。性能在低并发的情况下synchronized 的性能优于 Lock因为 Lock 需要显式地获取和释放锁而 synchronized 是在 JVM 层面实现的在高并发的情况下Lock 的性能可能优于 synchronized因为 Lock 可以更好地支持高并发和读写分离的场景。 总的来说synchronized 的使用更加简单但是在某些场景下会受到性能的限制而 Lock 则更加灵活可以更精确地控制锁的范围和条件变量但是使用起来比较繁琐。需要根据具体的业务场景和性能需求来选择使用哪种锁机制
http://www.hkea.cn/news/14259630/

相关文章:

  • 社区网站源码新闻发布的网站
  • 男女直接做性视频网站建设工程施工合同范本2017下载
  • 绩效管理网站开发网站设计公司收费标准
  • 淘宝装修免费模板有哪些网站群晖做网站服务器会卡吗
  • 济南自适应网站建设过期的网站域名
  • 网站切图规范深圳建站公司企业
  • xyz域名的网站有哪些云网站建设的意义
  • 网站建设实训教程石家庄住建局网站
  • 深圳做的好的电子行业招聘网站汕头专业网站建设公司
  • 开放大学门户网站建设方案wordpress播放swf插件
  • 清河网站建设多少钱兰州网站怎么建设
  • 学院网站建设项目怎样写企业网站建设方案
  • 做网站 视频加载太慢服装设计公司名称
  • 竹子建设网站中国建设工程网站
  • 宁波做网站的广州市城乡建设信息中心网站
  • 关于建设网站的书本石林彝族网站建设
  • 网站后台放在哪里新建的网站 找不到了
  • 网站域名服务器建设工程包括哪几类工程
  • 公司静态网站模板下载百度关键词搜索引擎
  • 百度官方网站下载安装2022年房地产太惨了
  • 摩托车网站建设工会网站开发需求分析
  • 免费论坛建站阳江房产网最新楼盘精装修
  • 有域名怎么免费建站建网上商城的第三方网站哪个好
  • 大连响应式网站建设同城信息小程序源码
  • 网上购物网站建设成都城乡建设部网站首页
  • 网站 head关键字 密度 多少字wordpress主菜单
  • 医院网站和微信公众号建设方案江苏省高职重点专业群建设网站
  • 建设电影网站的关键西宁网站建设哪家强
  • 做网站js是什么wordpress怎么播放视频播放器
  • 网站维护费用计入什么科目济宁网站建设 中企动力临沂