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

手机上怎么建网站如何用国外网站做头条

手机上怎么建网站,如何用国外网站做头条,海南省住房公积金管理局app,西部数码网站模板最近面试遇到的一道题#xff0c;需要三个线程交替打印0-100#xff0c;当时对多线程并不是很熟悉因此没怎么写出来#xff0c;网上搜了之后得到现 synchronized wait/notifyAll 实现思路#xff1a;判断当前打印数字和线程数的取余#xff0c;不等于当前线程则处于等待…最近面试遇到的一道题需要三个线程交替打印0-100当时对多线程并不是很熟悉因此没怎么写出来网上搜了之后得到现 synchronized wait/notifyAll 实现思路判断当前打印数字和线程数的取余不等于当前线程则处于等待状态。循环结束唤醒所有等待线程。 public class PrintExample {//创建一个公共锁对象private static final Object Lock new Object();//执行线程数private static final int THREAD_COUNT 3;//打印数字的起始点private static volatile int START 0;//打印数字的结束点private static final int END 100;private static class Print implements Runnable{private final int index;public Print(int index){this.index index;}Overridepublic void run() {while(STARTEND){synchronized (Lock){//START和线程数进行取余如果不等于当前线程的则等待while(START % THREAD_COUNT ! index){try{Lock.wait();}catch (Exception e){e.printStackTrace();}}//否则进行输出if(STARTEND){System.out.println(Thread (index1) ,打印结果 START);}START;//唤醒等待线程Lock.notifyAll();}}}public static void main(String[] args) {for(int i 0; i THREAD_COUNT; i){new Thread(new Print(i)).start();}}} }ReetrantLock await/signalAll 实现思路实现方式和synchronized wait/notifyAll儿乎完全一样。我们只需要4步 1.synchronized 替换为ReentrantLock 2.根据锁对象创建一个Condition对象 3.wait替换成await 4.notifyAll 替换为 signalAll   public class PrintExample {//创建一个公共锁对象private static final ReentrantLock Lock new ReentrantLock();//根据锁对象创建一个Condition对象private static final Condition CONDITION Lock.newCondition();//执行线程数private static final int THREAD_COUNT 3;//打印数字的起始点private static volatile int START 0;//打印数字的结束点private static final int END 100;private static class Print implements Runnable{private final int index;public Print(int index){this.index index;}Overridepublic void run() {while(STARTEND){Lock.lock();try {//START和线程数进行取余如果不等于当前线程的则等待while(START % THREAD_COUNT ! index){try{CONDITION.await();}catch (Exception e){e.printStackTrace();}}//否则进行输出if(STARTEND){System.out.println(Thread (index1) ,打印结果 START);}START;//唤醒等待线程CONDITION.signalAll();}catch (Exception e){e.printStackTrace();}finally {Lock.unlock();}}}public static void main(String[] args) {for(int i 0; i THREAD_COUNT; i){new Thread(new Print(i)).start();}}} }ReetrantLock await/signal 因为Condition相对wait/notify方式可以唤醒指定线程。那我们就完全不用每次都唤醒全部线程仅需要唤醒下一次需要执行的线程就可以了。 相比较 ReentrantLock await/signalAll 改进方法 1.去除公共的Condition对象替换为ListCondition conditions 2.调用下一个线程的Condition对象的signal方法唤醒下一个线程 public class PrintExample {//创建一个公共锁对象private static final ReentrantLock Lock new ReentrantLock();//根据锁对象创建一个Condition对象//private static final Condition CONDITION Lock.newCondition();//执行线程数private static final int THREAD_COUNT 3;//打印数字的起始点private static volatile int START 0;//打印数字的结束点private static final int END 100;private static class Print implements Runnable{private final int index;private final ListCondition conditions;public Print(int index,ListCondition conditions){this.index index;this.conditions conditions;}//只唤醒下一个线程private void signalNext(){int nextIndex (index 1) % THREAD_COUNT;conditions.get(nextIndex).signal();}Overridepublic void run() {while(STARTEND){Lock.lock();try {//START和线程数进行取余如果不等于当前线程的则等待while(START % THREAD_COUNT ! index){try{conditions.get(index).await();}catch (Exception e){e.printStackTrace();}}//否则进行输出if(STARTEND){System.out.println(Thread (index1) ,打印结果 START);}START;//唤醒等待线程signalNext();}catch (Exception e){e.printStackTrace();}finally {Lock.unlock();}}}public static void main(String[] args) {ListCondition conditionList new ArrayList();conditionList.add(Lock.newCondition());conditionList.add(Lock.newCondition());conditionList.add(Lock.newCondition());for(int i 0; i THREAD_COUNT; i){new Thread(new Print(i,conditionList)).start();}}} }此处使用 ListCondition conditions让每个线程都拥有属于自己的condition这样可以单独唤醒和等待。 Condition是什么 概念 condition可以理解为条件队列。当一个线程在调用了其await方法以后直到线程等待的某个条件为真的时候才会被唤醒。Condition必须要配合锁一起使用因为对共享状态变量的访问发生在多线程环境下。一个Condition的实例必须与一个Lock绑定因此Condition一般都是作为Lock的内部实现 方法 Condition依赖于Lock接口 方法解释lock.newCondition()生成一个Conditionawait()对应Object的wait()使线程等待signal()对应Object的notify()唤醒线程 注意调用Condition的await()和signal()方法都必须在lock.lock()和lock.unlock()之间使用 在生产者和消费者中Condition的执行方式 当在线程Consumer中调用await方法后线程Consumer将释放锁并且将自己沉睡等待唤醒。这时等到线程Producer获取到锁后开始执行任务完毕后调用Condition的signalall方法唤醒线程Consumer线程Consumer恢复执行。 以上说明Condition是一个多线程间协调通信的工具类使得某个或某些线程一起等待某个条件Condition,只有当该条件具备( signal 或者 signalAll方法被带调用)时 这些等待线程才会被唤醒从而重新争夺锁
http://www.hkea.cn/news/14305183/

相关文章:

  • 这么做国外网站的国内镜像站做网站买什么空间
  • 如何做网站文件网站广告接入
  • 重庆网站制做体育赛事网站公司
  • 免费企业cms建站系统网站开发联系人国强
  • 交互式网站开发技术有哪些手机下载软件
  • 电子商务网站建设的心得体会泉州建设企业网站
  • 无忧网站建设哪家便宜传奇手游新开网站
  • wordpress 4.61杭州优化外包公司排名
  • 美食网站开发背景搜索引擎排名优化包括哪些方面
  • 做网站的前端技术商丘哪里做网站比较好
  • 企业网站程序建设环保网站查询系统
  • 域名被锁定网站打不开怎么办个人做公司网页怎么做
  • 阿里巴巴的关联网站门户网站建设工作室
  • 专门做旅游尾单的网站抖音代运营法律案件
  • 企业开发网站公司韩国flash网站
  • 杭州企业网站seo免费学习资源网站
  • 建站如何赚钱如何建立一个外贸网站
  • 使用代理服务器后看什么网站vi视觉设计报价
  • 广东华星建设集团网站数据分析网站开发
  • 南昌seo专业团队温州seo优化网络推广
  • 建设网站策划方案重庆必去的十大景点
  • 个人网站备案后内容可以改么建设网站的相关技术指标
  • 国外婚纱网站建设现状购物网站开发成本
  • 360站长wordpress archive模板
  • 网站jquery在线优化php网站开发技术与开源系统应用 实训指导书
  • 易语言怎么做网站淄博网站制作建设优化
  • 谁有wap网站网站域名账号
  • 机票网站建设wordpress menu
  • 网站建设利润wordpress 国内 慢
  • 用python开发网站申请域名