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

重庆专业微信网站制作一般做个小程序多少钱

重庆专业微信网站制作,一般做个小程序多少钱,天津网上办事大厅,旅游网页代码synchronized关键字的作用、使用场景及锁升级过程。 synchronized关键字的作用 synchronized是Java中的一个关键字#xff0c;主要用于实现线程之间的同步。它的主要作用包括#xff1a; 确保线程互斥地访问同步代码#xff1a;当一个线程进入synchronized代码块或方法时主要用于实现线程之间的同步。它的主要作用包括 确保线程互斥地访问同步代码当一个线程进入synchronized代码块或方法时它将锁定该对象其他线程需要等待锁释放后才能进入。这样可以确保在同一时间只有一个线程执行synchronized代码块或方法从而避免多个线程同时修改共享资源导致的数据不一致或冲突的问题。 保证共享变量的可见性synchronized除了实现互斥访问外还可以保证共享变量的可见性。当一个线程释放锁时会将对共享变量的更新刷新到主内存中而当另一个线程获取锁时会从主内存中重新读取最新的值保证了线程间的数据可见性。 保证有序性synchronized还可以确保代码的执行顺序。一个线程在执行完synchronized代码块或方法后会释放锁并将对共享变量的修改刷新到主内存而其他线程获取锁后会从主内存中重新读取最新的值。这样可以保证代码在不同线程间的执行顺序是按照预期的。 使用场景 synchronized常用于以下几种场景 多线程需要访问同一资源如文件、数据库连接或共享数据时使用synchronized可以防止数据不一致或竞态条件的发生。 实现生产者-消费者问题、读写操作和初始化需求在这些场景中多个线程可能需要按照特定的顺序或规则来访问或修改数据synchronized可以确保这些操作的正确执行。 需要对执行的操作进行排队保证它们按顺序串行执行在某些情况下为了保证操作的顺序性需要使用synchronized来同步线程的执行。 锁升级过程 在Java中synchronized关键字的锁升级是指锁的状态从无锁状态到偏向锁状态再到轻量级锁状态最后到重量级锁状态的过程。这个过程是为了提高程序的性能和并发能力 无锁状态当一个线程访问一个同步代码块时如果没有竞争那么该线程可以直接进入临界区执行不需要进行任何锁的操作。 偏向锁状态当一个线程访问一个同步代码块时如果没有竞争那么该线程会将对象头中的标记位设置为偏向锁并将线程ID记录在对象头中。下次该线程再次访问同步代码块时无需进行任何锁的操作可以直接进入临界区执行。 轻量级锁状态当多个线程竞争同一个锁时偏向锁会升级为轻量级锁。此时每个线程会在自己的栈帧中创建一个锁记录Lock Record来保存锁对象的Mark Word并尝试使用CASCompare and Swap操作来获取锁。如果CAS操作成功线程可以进入临界区执行如果CAS操作失败表示有其他线程竞争锁那么线程会膨胀为重量级锁状态。 重量级锁状态当多个线程竞争同一个锁时轻量级锁会升级为重量级锁。此时竞争锁的线程会进入阻塞状态操作系统会将其挂起直到锁被释放。其他线程再次竞争锁时也会进入阻塞状态。 锁的升级过程是为了在无竞争的情况下尽量减少锁的操作和线程的切换以提高程序的执行效率。只有在真正发生竞争时才会升级为重量级锁以保证线程的正确同步和互斥。 ReentrantLock与synchronized的区别及适用场景。 ReentrantLock与synchronized在Java并发编程中都是用于实现线程同步的重要机制但它们之间存在一些关键的区别以及不同的适用场景。 一、区别 锁的获取与释放 synchronized是Java的一个关键字它隐式地获取和释放锁。当一个线程进入synchronized代码块或方法时它会自动获取锁当退出代码块或方法时锁会自动释放。ReentrantLock是一个类实现了Lock接口。它要求显式地调用lock()方法来获取锁以及显式地调用unlock()方法来释放锁。锁的公平性 synchronized总是非公平锁即无法保证等待时间最长的线程会首先获得锁。ReentrantLock可以设置为公平锁或非公平锁。在构造ReentrantLock时可以传入一个布尔值true表示公平锁false表示非公平锁默认。公平锁可以保证按照线程等待的先后顺序来获取锁。响应中断 synchronized不响应中断即一个线程在等待锁的过程中不能被中断。ReentrantLock提供了能够响应中断的锁获取操作如lockInterruptibly()方法允许在等待锁的过程中响应中断。尝试非阻塞地获取锁 synchronized没有提供尝试非阻塞地获取锁的机制。ReentrantLock提供了tryLock()方法该方法尝试获取锁如果获取成功立即返回true否则返回false不会使线程阻塞。锁绑定多个条件 synchronized与Object类中的wait()、notify()和notifyAll()方法结合可以实现等待/通知机制但这种方式较为原始且不够灵活。ReentrantLock提供了更加丰富的Condition API每个ReentrantLock对象可以与一个或多个Condition对象条件变量关联这为线程间的协调提供了更为灵活的控制。性能 在JDK 6及以后的版本中synchronized的性能得到了显著提升引入了偏向锁和轻量级锁等优化技术使得synchronized在大多数场景下的性能与ReentrantLock相当甚至更优。ReentrantLock在高度竞争的环境下由于其提供了更灵活的尝试锁定和定时锁定等功能可能会表现出更好的性能。 二、适用场景 synchronized 适用于简单的同步需求如只需要基本的互斥访问控制。对性能要求较高且不需要复杂同步特性的场景。开发者希望代码更加简洁不需要手动管理锁的获取和释放。ReentrantLock 适用于需要更复杂同步特性的场景如需要公平锁、可中断锁、尝试非阻塞地获取锁等。在高度竞争和线程竞争激烈的场景下ReentrantLock的性能可能优于synchronized。需要更灵活地控制线程等待和唤醒的场景如使用多个Condition条件变量进行分组唤醒。 结论 ReentrantLock与synchronized各有优劣选择哪种同步机制取决于具体的应用场景和需求。在简单的同步需求中synchronized以其简洁性和良好的性能表现通常是首选而在需要更复杂同步特性的场景中ReentrantLock则提供了更灵活和强大的功能。
http://www.pierceye.com/news/865080/

相关文章:

  • 网站免费正能量直接进入浏览器下载安装公开课网站建设
  • 个人做电影网站合法吗网页制作与网站建设完全学习手册下载
  • 椒江做网站wordpress的分类
  • 新手做网站应该注意什么重庆市建设工程造价信息网公众号
  • 网址输入奉化seo页面优化外包
  • 坪山商城网站建设哪家效益快教务管理系统是应用软件吗
  • 深圳网站搭建找谁怎么在手机上制作app
  • 做app和做网站的区别桂林市天气预报15天
  • 高端织梦html5网站模板 dedecms网络公司模板关键词排名优化方法
  • 上海网站建设咨找个网站2021能看到
  • 可以用服务器做网站查询公司信息
  • 个人可以备案企业网站吗旅行社网站 模板
  • 三丰云做网站步骤网站怎么上传ftp
  • 做二手车有哪些网站有哪些手续网站建设单位有哪些方面
  • 建设网站的和服务器常州免费网站制作
  • 电子外贸网站重庆有什么好玩的
  • 商务网站的建设阶段包括郑州的做网站公司哪家好
  • 深圳网站建设网络公司七星彩网投网站建设
  • 手机建网站公司wordpress增加关键字
  • 招聘网站有哪些平台电商网站建设方式
  • 网站的备案要求域名icp备案查询
  • 网站的投资和建设项目站群服务器
  • 建网站电脑版和手机版怎么做网页实训总结及心得体会
  • 网站建设咨询费用一流的网站建设流程图
  • 如何进行营销型企业网站的优化如何在百度上推广自己
  • 360怎么变成建设银行首选网站网站建设财务分析
  • 建设网站的法律可行性分析快手自媒体平台
  • 网站建设的内容规划网站空间 阿里云
  • 网站建设横幅wordpress论坛怎么用
  • 做金融网站违法吗喜迎二十大演讲稿