仓酷云

标题: 发布一篇再谈线程:临盆者与消耗者 [打印本页]

作者: 简单生活    时间: 2015-1-18 11:05
标题: 发布一篇再谈线程:临盆者与消耗者
J2ME在手机游戏开发的作用也是无用质疑的。至于桌面程序,可能有人说java不行,界面不好看,但是请看看NetBeans和Eclipse吧,他们都是利用java开发的,而他们的界面是多么的华丽,所以界面决不是java的缺点。还有一个不得不提的优点就是大多java人员都挂在嘴边的java的跨平台性,目前这确实也是java优点之一。
场景形貌:
一个堆栈,临盆者在工场里临盆了产物后,将产物寄存到堆栈里,堆栈寄存数目无限,当满仓后,停止临盆,直到有消耗着将产物消耗后才持续临盆;消耗者从堆栈里提取产物,当堆栈空仓时,中断消耗产品,直到堆栈中有产物时,才持续消耗产物。
代码的完成(调剂线程sleep工夫能够完成临盆速率与消耗速率的分歧):
TestProduceAndConsumer.java
packagecom.nantian;

importjava.util.Random;

publicclassTestProduceAndConsumer{
   publicstaticvoidmain(String[]args){
       //创立一个工场对象
       ProductFactorypf=newProductFactory();
       //创立一个临盆者和一个消耗者,传送工场的援用,包管二者操纵的是统一个工场
       Producerp=newProducer(pf);
       Consumerc=newConsumer(pf);
       //启动两个线程
       p.start();
       c.start();
   }
}

//产物工场
classProductFactory{
   //product暗示堆栈
   privatechar[]product={,,,,};
   //flag标志产物数目
   privateintflag=0;

   //临盆产物
   publicsynchronizedvoidproduceProduct(charp)throwsInterruptedException{
       //判别产物是不是满仓,以便决意是不是持续临盆
       if(flag==product.length){
           this.wait();
       }
       //今世码实行到这里,必定不是满仓形态
       product[flag++]=p;
       //检察此时堆栈形态(这里不属于营业逻辑部分)
       System.out.print(p+"被临盆,以后堆栈形态:");
       for(chartmp:product){
           System.out.print(tmp);
       }
       System.out.println();
       //临盆办法完成,假如存在守候行列中的线程,应当叫醒
       this.notifyAll();
   }

   //消耗产物
   publicsynchronizedcharconsumeProduct()throwsInterruptedException{
       //判别堆栈是不是空仓,以便决意是不是消耗产物
       if(flag==0){
           this.wait();
       }
       //今世码实行到这里,必定不是空仓形态
       charp=product[--flag];product[flag]=;
       //检察此时堆栈形态(这里不属于营业逻辑部分)
       System.out.print(p+"被消耗,以后堆栈形态:");
       for(chartmp:product){
           System.out.print(tmp);
       }
       System.out.println();
       //消耗办法完成,假如存在守候行列中的线程,应当叫醒
       this.notifyAll();
       returnp;
   }
}

//临盆者
classProducerextendsThread{
   privateProductFactorypf=null;

   publicProducer(ProductFactorypf){
       this.pf=pf;
   }

   publicvoidrun(){
       //一共临盆20个产物
       for(inti=0;i<20;i++){
           //随机发生一个年夜写字母作为产物
           Randomr=newRandom();
           charp=(char)(r.nextInt(26)+A);
           try{
               //产物进库
               pf.produceProduct(p);
               //存心sleep,以便消耗线程无机会取得CPU工夫片,便利演示
               Thread.sleep(200);
           }catch(InterruptedExceptione){
               e.printStackTrace();
           }
       }
   }
}

//消耗者
classConsumerextendsThread{
   privateProductFactorypf=null;

   publicConsumer(ProductFactorypf){
       this.pf=pf;
   }

   publicvoidrun(){
       //一共消耗20个产物
       for(inti=0;i<20;i++){
           try{
               //产物出库
               pf.consumeProduct();
               //存心sleep,以便临盆线程无机会取得CPU工夫片,便利演示
               //sleep工夫略微错开,制止同时合作CPU工夫片
               Thread.sleep(300);
           }catch(InterruptedExceptione){
               e.printStackTrace();
           }
       }
   }
}

还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。
作者: 小魔女    时间: 2015-1-20 14:06
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 乐观    时间: 2015-1-29 08:41
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者: 爱飞    时间: 2015-1-30 21:48
是一种使网页(Web Page)产生生动活泼画面的语言
作者: 变相怪杰    时间: 2015-2-2 17:23
Java 编程语言的风格十分接近C、C++语言。
作者: 愤怒的大鸟    时间: 2015-2-8 02:34
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者: 第二个灵魂    时间: 2015-2-24 02:09
是一种使用者不需花费很多时间学习的语言
作者: 小妖女    时间: 2015-3-7 10:29
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者: 山那边是海    时间: 2015-3-14 22:49
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 蒙在股里    时间: 2015-3-21 14:50
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2