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

做拍福利爱福利视频网站现在办宽带多少钱一年

做拍福利爱福利视频网站,现在办宽带多少钱一年,北京vi设计公司北京广告设计公司,然后在亚马逊网站上做外贸reference : http://www.cnblogs.com/linjiqin/archive/2013/05/30/3108188.html 在Java多线程应用中#xff0c;队列的使用率很高#xff0c;多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻 塞队列和非阻塞队列#xff0c;其中阻…reference : http://www.cnblogs.com/linjiqin/archive/2013/05/30/3108188.html 在Java多线程应用中队列的使用率很高多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻 塞队列和非阻塞队列其中阻塞队列的典型例子是BlockingQueue非阻塞队列的典型例子是ConcurrentLinkedQueue在实际 应用中要根据实际需要选用阻塞队列或者非阻塞队列。 注什么叫线程安全这个首先要明确。线程安全就是说多线程访问同一代码不会产生不确定的结果。 并行和并发区别 1、并行是指两者同时执行一件事比如赛跑两个人都在不停的往前跑2、并发是指资源有限的情况下两者交替轮流使用资源比如一段路(单核CPU资源)同时只能过一个人A走一段后让给BB用完继续给A 交替使用目的是提高效率 LinkedBlockingQueue由于LinkedBlockingQueue实现是线程安全的实现了先进先出等特性是作为生产者消费者的首选LinkedBlockingQueue 可以指定容量也可以不指定不指定的话默认最大是Integer.MAX_VALUE其中主要用到put和take方法put方法在队列满的时候 会阻塞直到有队列成员被消费take方法在队列空的时候会阻塞直到有队列成员被放进来。   package cn.thread;import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue;/*** 多线程模拟实现生产者消费者模型* * author 林计钦* version 1.0 2013-7-25 下午05:23:11*/ public class BlockingQueueTest2 {/*** * 定义装苹果的篮子* */public class Basket {// 篮子能够容纳3个苹果BlockingQueueString basket new LinkedBlockingQueueString(3);// 生产苹果放入篮子public void produce() throws InterruptedException {// put方法放入一个苹果若basket满了等到basket有位置basket.put(An apple);}// 消费苹果从篮子中取走public String consume() throws InterruptedException {// take方法取出一个苹果若basket为空等到basket有苹果为止(获取并移除此队列的头部)return basket.take();}}// 定义苹果生产者class Producer implements Runnable {private String instance;private Basket basket;public Producer(String instance, Basket basket) {this.instance instance;this.basket basket;}public void run() {try {while (true) {// 生产苹果System.out.println(生产者准备生产苹果 instance);basket.produce();System.out.println(!生产者生产苹果完毕 instance);// 休眠300msThread.sleep(300);}} catch (InterruptedException ex) {System.out.println(Producer Interrupted);}}}// 定义苹果消费者class Consumer implements Runnable {private String instance;private Basket basket;public Consumer(String instance, Basket basket) {this.instance instance;this.basket basket;}public void run() {try {while (true) {// 消费苹果System.out.println(消费者准备消费苹果 instance);System.out.println(basket.consume());System.out.println(!消费者消费苹果完毕 instance);// 休眠1000msThread.sleep(1000);}} catch (InterruptedException ex) {System.out.println(Consumer Interrupted);}}}public static void main(String[] args) {BlockingQueueTest2 test new BlockingQueueTest2();// 建立一个装苹果的篮子Basket basket test.new Basket();ExecutorService service Executors.newCachedThreadPool();Producer producer test.new Producer(生产者001, basket);Producer producer2 test.new Producer(生产者002, basket);Consumer consumer test.new Consumer(消费者001, basket);service.submit(producer);service.submit(producer2);service.submit(consumer);// 程序运行5s后所有任务停止 // try { // Thread.sleep(1000 * 5); // } catch (InterruptedException e) { // e.printStackTrace(); // } // service.shutdownNow();}}ConcurrentLinkedQueueConcurrentLinkedQueue是Queue的一个安全实现Queue中元素按FIFO原则进行排序采用CAS操作来保证元素的一致性。LinkedBlockingQueue 是一个线程安全的阻塞队列它实现了BlockingQueue接口BlockingQueue接口继承自java.util.Queue接口并在这 个接口的基础上增加了take和put方法这两个方法正是队列操作的阻塞版本。 package cn.thread;import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class ConcurrentLinkedQueueTest {private static ConcurrentLinkedQueueInteger queue new ConcurrentLinkedQueueInteger();private static int count 2; // 线程个数//CountDownLatch一个同步辅助类在完成一组正在其他线程中执行的操作之前它允许一个或多个线程一直等待。private static CountDownLatch latch new CountDownLatch(count);public static void main(String[] args) throws InterruptedException {long timeStart System.currentTimeMillis();ExecutorService es Executors.newFixedThreadPool(4);ConcurrentLinkedQueueTest.offer();for (int i 0; i count; i) {es.submit(new Poll());}latch.await(); //使得主线程(main)阻塞直到latch.countDown()为零才继续执行System.out.println(cost time (System.currentTimeMillis() - timeStart) ms);es.shutdown();}/*** 生产*/public static void offer() {for (int i 0; i 100000; i) {queue.offer(i);}}/*** 消费* * author 林计钦* version 1.0 2013-7-25 下午05:32:56*/static class Poll implements Runnable {public void run() {// while (queue.size()0) {while (!queue.isEmpty()) {System.out.println(queue.poll());}latch.countDown();}} }复制代码 运行结果costtime 2360ms 改用while (queue.size()0)后运行结果cost time 46422ms 结果居然相差那么大看了下ConcurrentLinkedQueue的API原来.size()是要遍历一遍集合的难怪那么慢所以尽量要避免用size而改用isEmpty(). 总结了下 在单位缺乏性能测试下对自己的编程要求更加要严格特别是在生产环境下更是要小心谨慎。转载于:https://www.cnblogs.com/awkflf11/articles/5179142.html
http://wiki.neutronadmin.com/news/54945/

相关文章:

  • 甘肃兰州网站建设音乐网站建设方案书模板
  • 网页设计与网站建设主要内容网络营销推广活动方案
  • 长春seo网站优化佛山高端网页制作
  • 吉林市做网站的科技html5网站后台页面设计
  • 网站显示备案号seo站外推广
  • ps制作博客网站界面外贸网站平台是不是很难做
  • 中建招聘网站wordpress如何加表情
  • 做外汇看新闻在什么网站看wordpress 摘要函数
  • 山东建设局网站电工网站 网页区别是什么
  • 汽车 营销 网站建设多语言网站思路
  • 专业的美容网站建设公关咨询公司
  • php网站建设 关键技术沈阳男科三甲医院排行榜
  • 一个人做的网站做什么好外贸型网站建设方法
  • 前端做网站难吗专业的定制型网站建设
  • 网站推广渠道制作简易网站
  • 中国工商银行官网网站wordpress 手机维修
  • 江苏省泰州市建设局官方网站邯郸网站制作外包
  • 网站建设需要什么流程图中国石油天然气第七建设公司网站
  • 佟年帮韩商言做网站是第几集遂昌建设局网站
  • 水泵行业网站怎么做盗版小说网站怎么赚钱
  • 晋江网站设计网站备案取消 后果
  • 如何做滴滴网站平台北京网站建设大概多少钱
  • 男女做微电影网站广州建设厅网站首页
  • 湖北营销型网站建设wordpress登陆重定向
  • 网站建设大小河南网站建设公司|河南网站建设价格费用
  • 律师微网站建设怎么写网站建设推广
  • 公司网站实名认证怎么做四川建设安全生产监督管理局网站
  • 网站的侧边栏怎么做有服务器如何做网站
  • wp网站开发物流网站模板
  • 做网站和做小程序哪个好网站开发好什么进行界面的优化