说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于java程序的 开于关

编辑:说三道四文库 发布时间:2018-06-22 03:48
HTML文档下载 WORD文档下载 PDF文档下载
就是说我用java写了一个程序,有一个线程,里面是
while(true)
{
}
这样的形势,就是说用命令行 java 程序名 运行后程序一直在运行
我现在想请教一下对于这个问题,能不能不从人物管理器中把线程kill掉,而是用java提供的一些命令来kill,我觉得应该能做到,我看有程序这么搞(那个程序比较复杂,无法模仿),但是我不会
遂请教各位大虾,谢谢
需要做到两点,首先要改一下你的while(true),加个标志exitflag 比如while(!exitflag),其次由于你是要重新执行一个java程序,所以涉及到进程之间的通信,有两种方式,一种是共享内存,一种是通过socket,共享内存比较麻烦,我觉得socket最简单,在你的原来那个程序里起一个socketserver,一旦收到连接,就改变exitflag,然后写一个kill程序,用socket连接你的socketserver,不就OK了?
http://www.10zhizui.cn
while(!isFinished)

楼上真能整, 另外楼主, 任务管理器Kill的是进程不是线程
Ctrl+c可在以dos下终止程序
你还改一改程序吧
标记我这个没法改,必须是while(true)形式,因为这个是守护进程。必须时刻运行着。
我现在想用程序去关闭它,就是说可能要进行备份文件什么的时候,想暂不让它运行,我现在都是手工去任务管理器中kill的!
我不知道怎么写个bat程序,处理下?


to jk88811 :是进程,呵呵!概念错误

请几位大侠提示下
1. ntsd -c q -p PID

2. tskill processid 或 tskill processname

因为 tskill 可以使用进程名称来杀,对于杀普通的应用非常方便。


ntsd的参数, -pn 参数可以直接带进程名称。

ntsd -c q -pn processname

to K_pax :这个是可以,但是我现在启动是写了个bat批处理几条命令的,如果用ctrl+c的话,整个界面会消失,无法保留运行时出现的提示信息,而如果正常结束进程的话,我那个启动的bat程序里还有往后的命令,使得界面不会消失。如果每次运行都要cmd一下去运行比较麻烦(当然可以写个程序调用,那自己找自己麻烦了)
谢谢大牛再帮帮忙
to:autumn200005 
怎么得到PID呢?
用名字的话:
我发现我用 java abc这个命令运行的话,任务管理器中显示的是java.exe进程,这个可以理解,问题是用jvm运行的多的话,该如何区分哪个java.exe对应哪个呢?
谢谢了
to autumn200005 :
还在吗,能帮我解决这个问题吗,大哥?
每次运行pid都是在变化的,而且java程序进程都是java.exe有可能同时会有几个,我怎么用个批处理程序来定位我启动的那个程序,用tskill或者ntsd命令来杀掉呢,谢谢了!!!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘