怎么防止程序二重启动?非常着急,给1000分 关注一下。是不是可以在你的程序中设一个标记flag,就跟系统变量一样,程序一启动就把它设为1,每次程序启动之前都检查一下此标记,如果是0就启动,1就正常退出。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种东西网上有讨论的。提个思路,程序启动时对一个端口进行绑定,利用socket通信来做。 DreamHead(大头) 哪个网站? 你试试这段程序的思路import java.net.*;public class InstanceControl extends Thread { public void run() { try{ Socket sock = new Socket("127.0.0.1",22222); //创建socket,连接22222端口 } catch (Exception e) {} try{ ServerSocket server = new ServerSocket(22222);//创建socket,在22222端口监听 server.accept(); //等待连接 server.close(); //有连接到来,也就是说有新的实例 System.exit(0); //这个实例退出 }catch (Exception e) { e.printStackTrace(); } }}public class ProgramMain { public static void main(String argv[]) { InstanceControl ic = new InstanceControl(); ic.start(); mainFrame frame = new mainFrame(); }} 可以用session保存用户的用户名如果该用户访问过该程序后标记记下 有没有相当于VB中函数App.PrevInstance的功能! ppxstar(胖胖仙) System.exit(0); //这个实例退出???是退出虚拟机吗?那另外一个实例还能运行吗? Java 里没有 App.PrevInstance 这种东西所以 每个 class 都是独立的即使两次执行同一个 class 他们的结果也完全一样想在代码里控制是不可能的所以 必须借助于外部的一些 独立于 Java 的东西作为 标志比如你可以利用文件 来标记每次运行时 检查一个特殊的文件 如果它存在 则退出如果不存在 那么就 建立这个文件在正常退出时删除这个文件 或修改文件里的内容 以清除标记 可以将session判断写到文件里再include进来 http://www.csdn.net/Develop/read_article.asp?id=17091搂主1000分给我,我给你源代码,包括dll的 上面的url是:http://www.csdn.net/develop/article/17/17091.shtm System.exit(0); 和System.exit(1);有什么区别? TO ppxstar(胖胖仙) 我的程序怎么退不出来 不知道程序二重启动是什么意思,若理解成不能打开两个实例,那就太简单了。你可以在类中设置一个静态的变量,在构造函数中设置此静态变量的值,并根据条件判断是否可以让构造函数成功返回。比如:public class test(){ private static int iFlag = 0 ; public test() { iFlag ++ ; if (iFlag > 0) { System.exit(-1); } }} 不好意思,错了一点:不知道程序二重启动是什么意思,若理解成不能打开两个实例,那就太简单了。你可以在类中设置一个静态的变量,在构造函数中设置此静态变量的值,并根据条件判断是否可以让构造函数成功返回。比如:public class test(){ private static int iFlag = 0 ; public test() { iFlag ++ ; if (iFlag > 1) { System.exit(-1); } }} 对于需要独立的对象只创建一次,看看effective java吧,我记得好象把构造方法设为私有,然后在static一个对象,只能调用这个对象,而不能在构造一个方法了。这有没有用呀? 谁能解释ppxstar(胖胖仙)的程序? [重新建帖]求助C#转JAVA struts和spring整合的时候 struts无法注入 关于数据库的一个小问题。 mysql查询的一个问题 请问哪有用myeclipse+struts做的留言本或简单的新闻系统下载啊?谢谢。 JSP小问题,关于时间的。 本人想设计一个论坛! javaBean与Servlet的本质区别(欢迎跟贴) 使用WebAppDeploy ROOT warpConnection /,原来的php就不能执行了,该怎么解决? tomcat4.1.7问题 tomcat连接oracle得问题??? jboss3.0+rhlinux8.0+mysql下的中文问题
哪个网站?
public class InstanceControl extends Thread {
public void run() {
try{
Socket sock = new Socket("127.0.0.1",22222);
//创建socket,连接22222端口
}
catch (Exception e)
{}
try{
ServerSocket server = new ServerSocket(22222);//创建socket,在22222端口监听
server.accept(); //等待连接
server.close(); //有连接到来,也就是说有新的实例
System.exit(0); //这个实例退出
}catch (Exception e)
{
e.printStackTrace();
}
}
}public class ProgramMain {
public static void main(String argv[])
{
InstanceControl ic = new InstanceControl();
ic.start();
mainFrame frame = new mainFrame();
}
}
如果该用户访问过该程序后
标记记下
所以 每个 class 都是独立的
即使两次执行同一个 class 他们的结果也完全一样
想在代码里控制是不可能的
所以 必须借助于外部的一些 独立于 Java 的东西作为 标志比如你可以利用文件 来标记
每次运行时 检查一个特殊的文件 如果它存在 则退出
如果不存在 那么就 建立这个文件
在正常退出时删除这个文件 或修改文件里的内容 以清除标记
再include进来
http://www.csdn.net/develop/article/17/17091.shtm
我的程序怎么退不出来
public class test()
{
private static int iFlag = 0 ;
public test()
{
iFlag ++ ;
if (iFlag > 0)
{
System.exit(-1);
}
}
}
不知道程序二重启动是什么意思,若理解成不能打开两个实例,那就太简单了。你可以在类中设置一个静态的变量,在构造函数中设置此静态变量的值,并根据条件判断是否可以让构造函数成功返回。比如:
public class test()
{
private static int iFlag = 0 ;
public test()
{
iFlag ++ ;
if (iFlag > 1)
{
System.exit(-1);
}
}
}
谁能解释ppxstar(胖胖仙)的程序?