|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net网页编程的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。
四种体例sychronized关头字
sychronizedmethod(){}
sychronized(objectReference){/*block*/}
staticsynchronizedmethod(){}
sychronized(classname.class)
个中1和2是代表锁以后对象,即一个对象就一个锁,3和4代表锁这个类,即这个类的锁
要注重的是sychronizedmethod()不是锁这个函数,而是锁对象,即:假如这个类中有两个办法都是sychronized,那末只需有两个线程共享一个该类的reference,每一个挪用这两个办法之一,不论是否统一个办法,城市用这个对象锁举行同步。锁类的3和4类推,即该类的分歧reference挪用了sychronized区段的咚咚就会受类锁的把持
另有,假如两个函数挪用的前后按次不克不及被打断,那末能够有个专门的锁对象来完成这个义务:
classMyLock
{
synchronizedgetLock()
{
//####还没写完
}
}
五个品级拜见effectivejava Item52:Documentthreadsafety
immutable不成变对象
thread-safe线程平安的,能够宁神利用,如java.util.Timer
conditionallythread-safe前提线程平安的,如Vector和Hashtable,通常为平安的,除非存在几个办法挪用之间的按次不克不及被打断,这时候能够用分外的锁来完成
thread-compatible可使用synchronized(objectReference)来帮忙完成对线程的挪用
thread-hostile不平安的
wait¬ifyAll
在轮回中利用wait利用notifyAll而不是notify
pipe
java中也有pipe的,四个类:PipedInputStream,PipedInputReader,PipedOutputStream,PipedOutputWriter上面是一段临盆者消耗者的代码(摘自corejavaII):
/*setuppipes*/
PipedOutputStreampout1=newPipedOutputStream();
PipedInputStreampin1=newPipedInputStream(pout1);
PipedOutputStreampout2=newPipedOutputStream();
PipedInputStreampin2=newPipedInputStream(pout2);
/*constructthreads*/
Producerprod=newProducer(pout1);
Filterfilt=newFilter(pin1,pout2);
Consumercons=newConsumer(pin2);
/*startthreads*/
prod.start();
filt.start();
cons.start();
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。 |
|