仓酷云
标题:
发布一篇再谈线程:临盆者与消耗者
[打印本页]
作者:
简单生活
时间:
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