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

网站开发的基本原则重庆巫山网站设计哪家专业

网站开发的基本原则,重庆巫山网站设计哪家专业,网站cms相关知识,怎么找做企业网站的摘要#xff1a; Java线程同步与异步 线程池 无锁化的实现方案 分布锁的实现方案 分享的目的#xff1a; 进一步掌握多线程编程和应用的技巧#xff0c;希望对大家在平时的开发中应对高并发编程有所帮助 Java线程同步与异步 1. 同步相关的方法有 wait, notify, notifyAll 2.…摘要 Java线程同步与异步 线程池 无锁化的实现方案 分布锁的实现方案 分享的目的 进一步掌握多线程编程和应用的技巧希望对大家在平时的开发中应对高并发编程有所帮助 Java线程同步与异步 1. 同步相关的方法有 wait, notify, notifyAll 2. Java线程同步与异步 线程池 无锁化的实现方案 分布锁的实现方案 分享的目的 进一步掌握多线程编程和应用的技巧希望对大家在平时的开发中应对高并发编程有所帮助 Java线程同步与异步 1. 同步相关的方法有 wait, notify, notifyAll 2. 关键字 synchronized 3. JDK锁的框架 AQS (AbstractQueuedSynchronizer) 4. AQS的实现类 java.util.concurrent.locks.ReentrantLock java.util.concurrent.locks.ReentrantReadWriteLock java.util.concurrent.CountDownLatch java.util.concurrent.Semaphore 5. 例子——两个线程交替打印出100以内的奇数和偶数 主程序 输出结果示例 ... ... ... 思考 读者可以用两种其它方法实现加深自己对Java线程同步和互斥的理解 用 ReentrantLock 还是用wait和notify 线程池 作用: 控制线程并发数量一般用在控制单机并发度上, 也是实现流控的一种方案 实现原理: 1. 参数含义 corePoolSize 核心线程的数量, 在CPU密集型和IO密集型的任务中这个参数的设置不太一样 在CPU密集型的应用中 通常这个参数被设置为 机器cpu核数-1, 例如机器有4个核这个参数就被设置为3, 这样做的即兼顾了最大的并发度又兼顾了其它非重要的核心任务的执行 在IO密集的任务中 通常这个参数被设置为机器cpu核数*1.5 - 3,具体情况还需要根据实际业务情况进行压测比较然后再给出最优的值 maximumPoolSize 最大核心线程的数量 poolSize 当前线程的数量 当用户向线程池中新提交一个线程的时候会有如下情况 情况1. 如果当前线程池中线程的数量小于corePoolSize, 就会创建一个新的线程, 并添加到线程池中; 情况2. 如果当前线程池中线程的数量等于corePoolSize, 并且等待队列中还没有满则把当前用户添加的线程对象放在等待队列中; 情况3. 如果当前线程池中线程的数量大于等于corePoolSize并且小于maximunPoolSize并且等待队列已经满则创建一个新的线程并添加到线程池中; 情况4. 如果当前线程池中线程的数量等于maximunPoolSize, 则会根据线程创建线程时候的拒绝策略进行相应的处理; 2. java线程对象中run方法和start方法的区别: 2.1 线程对象直接调用run方法JVM是不会有感知是不会直接产生一个新的线程, 此时程序运行的方式依然是串行的; 2.2 线程对象直接调用start方法JVM才会有感知会产生一个新的线程 此时才会产生并发多线程; 线程池正是充分利用了run方法和start的区别来实现线程的复用 3. 线程池的核心代码 下面均是以jdk1.6的线程池的源码jdk1.7和jdk1.8线程池实现在上有些变化但核心思想不变有兴趣可以自己去研究 提交线程的核心代码 执行用户任务的核心代码 无锁化的实现方案 用线程池的方案 1. netty的reactor线程模型参考netty官方或网上相关的资料 2. 异地机房数据库之间的数据同步 用表名主键名做hash hash值相同的记录被写到同一个Kafka的Partition中去假设一个Partition用一个线程进行消费 这样不同线程之间写入目标数据库的时候就不会存在数据库行锁的竞争关系间接实现了无锁化的操作, 即线程之间并行线程内部串行, 如下图所示; 用CAS的命令 1. JDK中各种类型值的原子操作 AtomicInteger AtomicLong AtomicBoolean 2. jdk中各种锁的实现, 本质也是volitate变量CAS java.util.concurrent.locks.ReentrantLock java.util.concurrent.Semaphore java.util.concurrent.CountDownLatch 分布锁的实现方案 1. tair incr和decr操作相当于是乐观锁 2. Redis/memcache setNx命令 3. Zookeeper 充分利用watcher机制创建临时结点谁创建成功谁就获得当前的锁 4. 数据库利用数据库的行锁 // 加锁SQL update trade_base set status 1 where trade_no“XXX” and status 0 // 解锁SQL update trade_base set status 0 where trade_no“XXX” and status 1 注意trade_base表上一要有trade_no的列的唯一索引 当然具体用那种分布锁还需要结合业务自身的需要一般来说在并发量不是别大数据库完全可以扛得住的情况下用数据库实现分布锁最快最方便而且性能的损失也非常地小 当然现在很多场景下都是分库分表并且加锁和解锁分别都只影响一行对数据库来说加锁和解锁的 sql也是非常轻量的sql操作因此在性能损失上不用过多的担心 原文链接 本文为云栖社区原创内容未经允许不得转载。
http://www.zqtcl.cn/news/524570/

相关文章:

  • 自己做网站需要买什么如何做微信商城网站
  • 有了网站开发app是不是更容易自建网站管理
  • 网站将要准备建设的内容有哪些做外贸有效的网站
  • 网站设计博客网站内容添加
  • 网站建站行业新闻微盟开店怎么收费
  • 网站的建设参考文献郑州网站建设中国建设建设银行
  • 重庆那些公司的网站是网易做的电信100m光纤做网站
  • 网站怎么设计产品营销策略包括哪些内容
  • 天元建设集团有限公司破产重组河源seo排名
  • 网站权重什么意思seo的搜索排名影响因素有
  • 建设报名系统是正规网站吗计算机培训班出来好找工作吗
  • 网站上的文章用秀米可以做吗宁波外客网络科技有限公司
  • 网站底部导航代码成品视频直播软件推荐哪个好一点ios
  • 上海电商网站开发公司垫江网站建设价格
  • 门户网站建设存在问题与不足商城网站开发项目文档
  • wordpress建站方便吗wordpress加入海报功能
  • 网站名称注册保护2018wordpress主题
  • 类似享设计的网站企业信息系统公示
  • 如何学习网站开发酒店网站源码
  • 怎么用nas做网站服务器WordPress云虚拟空间
  • 网站设计 ipad企业品牌推广宣传方案
  • 织梦网站怎么更换模板济南建设厅网站
  • 用wordpress仿站专业做俄语网站建设司
  • 做暧暧网站网站开发 思维导图
  • asp.net做登录注册网站苏醒的wordpress主题怎么样
  • 正能量不良网站推荐2020网站建设单位是什么
  • 固镇网站建设郑州网站seo顾问
  • 新建定制网站费用公司网站手机端和电脑端
  • 网站域名注册地址苏州建设培训中心网站
  • 高端娱乐网站建设沈阳seo专业培训