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

有产品做推广 选哪个 网站/企业整站推广

有产品做推广 选哪个 网站,企业整站推广,那个网站做问卷好,住房和城乡建设部于2021年8月10日2019独角兽企业重金招聘Python工程师标准>>> 修改锁的竞争原则 ReentrantLock和ReentrantReadWriteLock的构造函数都有一个Boolean型参数fairness,默认为false,该参数用来控制改变锁的竞争原则,即两种竞争模式 non-fair mode:当多…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

修改锁的竞争原则

ReentrantLock和ReentrantReadWriteLock的构造函数都有一个Boolean型参数fairness,默认为false,该参数用来控制改变锁的竞争原则,即两种竞争模式

  • non-fair mode:当多个线程等待获取锁时,jvm随机选择其中一个线程获取锁对象,访问临界区;
  • fair-mode:在该模式下,jvm会选择等待时间最长的线程来获取锁;

然而tryLock()方法可以不时线程睡眠,所以如果是使用tryLock()那么fairness参数将无效,不会有任何影响;

下面例子中使用一个属性作为实验,看在两种模式下的不同表现;

动手实验

(1)创建PrintQueue

public class PrintQueue {private final Lock queueLock=new ReentrantLock(true);public void printJob(Object document) {queueLock.lock();try {Long duration=(long)(Math.random()*10000);System.out.printf("%s:PrintQueue: Printing a Job during %d seconds\n",Thread.currentThread().getName(),(duration/1000));Thread.sleep(duration);} catch (InterruptedException e) {e.printStackTrace();}finally {queueLock.unlock();}//-------------queueLock.lock();try {Long duration=(long)(Math.random()*10000);System.out.printf("%s:PrintQueue: Printing a Job during %d seconds\n",Thread.currentThread().getName(),(duration/1000));Thread.sleep(duration);} catch (InterruptedException e) {e.printStackTrace();}finally {queueLock.unlock();}}
}
(2)创建Job

public class Job implements Runnable {private PrintQueue printQueue;public Job(PrintQueue printQueue) {this.printQueue = printQueue;}@Overridepublic void run() {System.out.printf("%s: Going to print a document\n", Thread.currentThread().getName());printQueue.printJob(new Object());System.out.printf("%s: The document has been printed\n",Thread.currentThread().getName());}public static void main(String[] args) {PrintQueue printQueue=new PrintQueue();Thread thread[]=new Thread[10];for (int i=0; i<10; i++){thread[i]=new Thread(new Job(printQueue),"Thread "+ i);}for (int i=0; i<10; i++){thread[i].start();try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}}
}

一次运行结果:

Thread 0: Going to print a document
Thread 0:PrintQueue: Printing a Job during 0 seconds
Thread 1: Going to print a document
Thread 2: Going to print a document
Thread 3: Going to print a document
Thread 4: Going to print a document
Thread 5: Going to print a document
Thread 6: Going to print a document
Thread 7: Going to print a document
Thread 1:PrintQueue: Printing a Job during 9 seconds
Thread 8: Going to print a document
Thread 9: Going to print a document
Thread 2:PrintQueue: Printing a Job during 8 seconds
Thread 3:PrintQueue: Printing a Job during 1 seconds
Thread 4:PrintQueue: Printing a Job during 7 seconds
Thread 5:PrintQueue: Printing a Job during 4 seconds
Thread 6:PrintQueue: Printing a Job during 9 seconds
Thread 7:PrintQueue: Printing a Job during 8 seconds
Thread 0:PrintQueue: Printing a Job during 0 seconds
Thread 8:PrintQueue: Printing a Job during 0 seconds
Thread 0: The document has been printed
当fairness设置为true,当printJob()方法执行再次获取Lock时,此时应该是Thread-1等待的时间最长,也是应该最先获取锁的线程,如上输出结果;如果将fairness设置为false,在此观察输出结果,多运行几次发现结果都不一样;

要点

了解fairness参数的作用

转载于:https://my.oschina.net/u/1387007/blog/343259

http://www.lbrq.cn/news/762697.html

相关文章:

  • 电竞网站方案设计/优化关键词的公司
  • 广州做大型网站建设/品牌营销方案
  • 网站php怎么做/山东公司网站推广优化
  • 微信赌博链接网站建设/网站流量统计软件
  • 金融类网站源码/网络推广的途径有哪些
  • 浉河网站建设/搜索引擎推广有哪些平台
  • 普陀网站制作/网络推广公司电话
  • 广州建网站兴田德润信任/活动推广方案怎么写
  • 做网站公证需要费用是多少/英雄联盟世界排名
  • 网站整站开发视频教程/代运营公司怎么找客户
  • 网站一个人可以做吗/百度网站的网址
  • 响应式网站的排版/专业seo网络推广
  • 做web网站的步骤/信息流广告案例
  • 高校门户网站开发/网址缩短在线生成器
  • 怎么做网站教程/百度推广营销怎么做
  • 免费设计图片素材网站/深圳网站建设哪家好
  • 网站建设营销公司/sem是什么的缩写
  • 连锁酒店网站方案/网络营销八大职能
  • 微店那样的网站怎么做/seo关键词查询
  • 建站塔山双喜/万网查询
  • 软件开发项目/seo谷歌外贸推广
  • 怎样做打赏网站/关键字c语言
  • 福田做棋牌网站建设找哪家公司好/百度竞价seo排名
  • app要有网站做基础知识/班级优化大师app下载学生版
  • 可以做简历的网站/网络电商推广方案
  • 做微信表情的微信官方网站/浙江seo技术培训
  • 申请网站就是做网站吗/重庆森林电影简介
  • 装修案例欣赏/长沙百度首页优化排名
  • 美工做图哪个网站好/网站怎么做推广
  • 做网站需要懂哪些语言/网站seo推广计划
  • demo 通讯录 + 城市选择器 (字母索引左右联动 ListItemGroup+AlphabetIndexer)笔记
  • Java应用架构实战指南:主流模式解析与Spring落地实践
  • Unity中的神经网络遗传算法实战
  • 开发Excel Add-in的心得笔记
  • PyTorch生成式人工智能——基于Transformer实现文本转语音
  • XGBoost 的适用场景以及与 CNN、LSTM 的区别