来看Java的线程平安四种体例五个品级
什么时候上述的三种开发工具能和三为一,什么时候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成为了大型项目的首选。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
页:
[1]