易截截图软件、单文件、免安装、纯绿色、仅160KB

java性能的优化(三)

    关于线程的操作,要注意如下几个方面。
    (1) 防止过多的同步
   
如上所示,不必要的同步常常会造成程序性能的下降。因此,如果程序是单线程,则一定不要使用同步。
    (2)
同步方法而不要同步整个代码段
   对某个方法或函数进行同步比对整个代码段进行同步的性能要好。
    (3)
对每个对象使用多”锁”的机制来增大并发。
   
一般每个对象都只有一个”锁”,这就表明如果两个线程执行一个对象的两个不同的同步方法时,会发生”死锁”。即使这两个方法并不共享任何资源。为了避免这
个问题,可以对一个对象实行”多锁”的机制。如下所示:
 class foo
{
private static int var1;
private static Object lock1 = new Object();
private static int var2;
private static Object lock2 = new Object();
public static void increment1() {
synchronized (lock1) {
var1++;
}
}
public static void increment2() {
synchronized (lock2) {
var2++;
}
}

   
4.输入和输出(I/O)
    输入和输出包括很多方面,但涉及最多的是对硬盘
,网络
或数据库的读写操作。对于读写操作,又分为有缓存和没有缓存的;对于数据库的操作,又可以有多种类型的
JDBC驱动
器可以选择。但无论怎样,都会给程序的性能带来影响。因此,需要注意如下几点:
   
(1) 使用输入输出缓冲
   尽可能的多使用缓存。但如果要经常对缓存进行刷新(flush),则建议不要使用缓存。
   
(2) 输出流(Output Stream)和Unicode字符串
   当时用Output
Stream和Unicode字符串时,Write类的开销比较大。因为它要实现Unicode到字节(byte)的转换.因此,如果可能的话,在使用
Write类之前就实现转换或用OutputStream类代替Writer类来使用。
    (3)
当需序列化时使用transient
   当序列化一个类或对象时,对于那些原子类型(atomic)或可以重建的原素要表识为
transient类型。这样就不用每一次都进行序列化。如果这些序列化的对象要在网络上传输,这一小小的改变对性能会有很大的提高。  
   
(4) 使用高速缓存(Cache)
   对于


相关文档:

JAVA(五)


Java杂谈(十一)??ORM 
        这是最后一篇Java杂谈了,以ORM框架的谈论收尾,也算是把J2ee的最后一方面给涵盖到了,之所以这么晚才总结出ORM这方面,一是笔者这两周比较忙,另一方面也想善始善终,仔细的先自己好好研究一下ORM框架技术,不想草率的敷衍了事。 &n ......

JAVA(三)


Java杂谈(六) 
        这篇是笔者打算写的J2se部分的最后一篇了,这篇结束之后,再写J2ee部分,不知道是否还合适写在这个版块?大家可以给点意见,谢谢大家对小弟这么鼓励一路写完前六篇Java杂谈的J2se部分。最后这篇打算谈一谈Java中的RMI机制和JVM沙箱安全框架。&nbs ......

java与.net的web service相互调用

一:简介
本文介绍了Java与.NET开发的Web Services相互调用的技术。本文包括两个部分,第一部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用Java做客户端调用.NET开发的Web Services。  
 
二:项目需要的工具  
WindowsXP Professial(IIS)
  Eclipse3.1(已装好Tomcat axis)
  VS ......

java回调

 1java中排序算法的回调
编写通用的排序代码时,面临的一个问题就是必须根据对象的实际类型来执行比较运算,从而实现正确的运算。程序设计的主要目标就是“将发生变化的东西与保持不变的东西分开” ,在这里保持不变的部分就是程序算法,而每次使用时都要变化的是对象的实际比较算法。所以我们采用回调,将 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号