易截截图软件、单文件、免安装、纯绿色、仅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中字符串与ASCII相互转换


import java.io.UnsupportedEncodingException;
public class T {
 public static void main(String[] args) throws UnsupportedEncodingException {
  t1();//ASCII转换为字符串
  t2();//字符串转换为ASCII码
 }
 public static void t1(){//ASCII转换为字符串
   ......

java byte与char互转原理 转

一、字节和unicode
Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件/流的保存方式是使用字节流的。因此Java要对这些字节流经行转化。 char是unicode的,而byte是字节。Java中 byte/char互转的函数在sun.io的包中间有。其中ByteToCharConverter类是中调度,可以用来告诉你,你用的 convertor。其中两个很 ......

JNBridge跨越Java和.Net代码

凭借JNBridge
技术,Java和.NET代码无需交叉编译
器就可以实现对象共享。所有Java代码运行在JVM上,而.NET代码则运行在CLR上。在该方案下,JVM和CLR可以运行在不同的机器上,也可以运
行在一台机器的不同进程上,甚至还能运行在相同的进程上。从开发者的角度来看,运行在其他虚拟机上的对象仅仅是代理的远程对象而已。JN ......

Java调用系统命令学习(二)

经过上一篇的学习,应该对Java中的Runtime类的exec方法了大致的了解,也知道应该如何去使用了吧。
首先学习下:Process类。
简单地测试一下:
调用Javac命令,并查看执行命令的返回值,并输出到控制台上去。
import java.io.IOException;
class Exec_Javac{
public static void main(String []args)throws IO ......

Java中的transient,volatile和strictfp关键字

Java
中的transient,volatile和strictfp关键字
    如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如:
Java
代码
class
 T {  
   transient
 
int
 a;  
//不需要维持
  
   int ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号