急!请教高手:一个关于java进程的问题 好像比较麻烦,要不运行的时候生成临时文件,再运行时作检测。或是采用JNI的方式解决,Windows平台上这个问题应该比较容易解决吧。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 临时文件肯定不行,万一断电怎么办,请叫jni方式是如何解决的 即不能同时运行两个相同的java程序--那你就自己重栽 classloader , 加上 check 如果相同的 class 就不加载了。还有就是在自己的应用程序中利用。class A {static A self=null;private A () {}A getInstance() { if ( self == null ) return new A(); else return SAMECLASSERROR;}} 上面所说的是Singleton模式(具体请看《设计模式》一书),但我觉得应该是不行的,因为static应该只在同一个地址空间内起作用。而信建立的进程,虚拟机会给它分配新的地址空间。解决方法应该用建立内核变量之类的东西。不知道说的对不对,没有验证过 :) 那关于java内存方面的操作,知道如何实现吗 可以试试用一个系统变量如isrun,起始为falseString isrun=system.getProperty("isrun","false");if(isrun.equalsIgnoreCase("false")){ system.setProperty("isrun","true");}else{ system.exit(-1);}java -Disrun=false app不知道可行否,仅供参考。 很简单,这是一个典型的信号量互斥访问的一个问题。可以用一个文件做作为一个公共区,当初始进程访问的,在文件中将信号量得到,置状态lock=true;若有第二个进程访问的时候,先判断状态位的情况,状态位(lock)为true,杀掉本进程,方法虽然有点土,但很使用哦。呵呵 如果用JNI,则可以在内存公共区建立一个全局变量,然后每次进入后判断,但这是平台相关的,只能通过本地接口来实现。你可以去VC或是Delphi论坛上问一问,在Windows平台上很容易实现的。 对于在同一个JVM中,这个问题好解决,无论用信号量或者static 或者single都行,但如果我启两个JVM怎么办? 这个问题其实关键是如何使不同的JVM之间进行通信,判断互斥现在还不知道 这个问题的关键是如何使两个JVM之间进行通信,判断互斥。我还不知道 没有很好的方法,JVM本身不提供这种支持.可以试一下建Socket的方法,但这种方法不牢靠. 关于动态代理的。 求解,有时input=keyboard.nextLine()语句被忽略的问题 Java如何把数组打印到txt文件里面? 最小化到托盘用java怎么写? 哇,这个问题有点儿难(给20分)。。。 如何获得数组大小 一个有关HTTP协议的问题,哪位大虾帮帮我 用java能做个浏览器吗? jb5如何用JDBC连接SQLSERVER7? java用swing插件把数据库中的数据表示出来 急!!!!!为什么总是找不到类? 一个脚本文件,读不懂,请大家指点!
请叫jni方式是如何解决的
那你就自己重栽 classloader , 加上 check 如果相同的 class 就不加载了。还有就是在自己的应用程序中利用。
class A {
static A self=null;
private A () {
}
A getInstance() {
if ( self == null ) return new A();
else return SAMECLASSERROR;
}
}
不知道说的对不对,没有验证过 :)
String isrun=system.getProperty("isrun","false");
if(isrun.equalsIgnoreCase("false")){
system.setProperty("isrun","true");
}else{
system.exit(-1);
}java -Disrun=false app不知道可行否,仅供参考。
可以用一个文件做作为一个公共区,当初始进程访问的,在文件中
将信号量得到,置状态lock=true;
若有第二个进程访问的时候,先判断状态位的情况,状态位(lock)为true,
杀掉本进程,方法虽然有点土,但很使用哦。呵呵
现在还不知道
我还不知道
可以试一下建Socket的方法,但这种方法不牢靠.