|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。 |
|