尝试用 tryLock 来保证 Instance 的唯一性

王朝java/jsp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

为了使自己的 Application 不会启动多个 Instance,做了如下尝试:

private static StringBuffer tmpFile = new StringBuffer();

private static boolean CheckInstance( ) {

boolean rst = false;

tmpFile.append( System.getProperty( "java.io.tmpdir" ) );

tmpFile.append( "HodePrn.tmp" );

File fp = new File( tmpFile.toString() );

if( fp.exists() ) {

try {

FileOutputStream fos = new FileOutputStream( fp.getPath() );

if( fos.getChannel().tryLock() == null ) {

rst = false;

}

else

rst = true;

} catch ( IOException e ) {

rst = false;

}

}

else {

try {

fp.createNewFile();

FileOutputStream fos = new FileOutputStream( fp.getPath() );

if( fos.getChannel().tryLock() == null ) {

rst = false;

}

else

rst = true;

} catch( IOException e ) {

rst = false;

}

}

return rst;

}

原来想用 jni 来实现,但是总觉得用 jni 来做这个实在大材小用,这个勉强凑合能用了,在 windows 平台上测试过,用 system 权限删除不了 lock 了的临时文件。

在下是 java 新手,还没入门,还望各位指正。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有