关于java程序的 开于关

shunan 2007-11-20 09:29:01
就是说我用java写了一个程序,有一个线程,里面是
while(true)
{
}
这样的形势,就是说用命令行 java 程序名 运行后程序一直在运行
我现在想请教一下对于这个问题,能不能不从人物管理器中把线程kill掉,而是用java提供的一些命令来kill,我觉得应该能做到,我看有程序这么搞(那个程序比较复杂,无法模仿),但是我不会
遂请教各位大虾,谢谢
...全文
100 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shunan 2007-11-24
  • 打赏
  • 举报
回复
to autumn200005 :
还在吗,能帮我解决这个问题吗,大哥?
每次运行pid都是在变化的,而且java程序进程都是java.exe有可能同时会有几个,我怎么用个批处理程序来定位我启动的那个程序,用tskill或者ntsd命令来杀掉呢,谢谢了!!!
K_pax 2007-11-21
  • 打赏
  • 举报
回复
Ctrl+c可在以dos下终止程序
你还改一改程序吧
shunan 2007-11-21
  • 打赏
  • 举报
回复
to:autumn200005
怎么得到PID呢?
用名字的话:
我发现我用 java abc这个命令运行的话,任务管理器中显示的是java.exe进程,这个可以理解,问题是用jvm运行的多的话,该如何区分哪个java.exe对应哪个呢?
谢谢了
shunan 2007-11-21
  • 打赏
  • 举报
回复
to K_pax :这个是可以,但是我现在启动是写了个bat批处理几条命令的,如果用ctrl+c的话,整个界面会消失,无法保留运行时出现的提示信息,而如果正常结束进程的话,我那个启动的bat程序里还有往后的命令,使得界面不会消失。如果每次运行都要cmd一下去运行比较麻烦(当然可以写个程序调用,那自己找自己麻烦了)
谢谢大牛再帮帮忙
autumn200005 2007-11-21
  • 打赏
  • 举报
回复
1. ntsd -c q -p PID

2. tskill processid 或 tskill processname

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


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

ntsd -c q -pn processname

shunan 2007-11-21
  • 打赏
  • 举报
回复
标记我这个没法改,必须是while(true)形式,因为这个是守护进程。必须时刻运行着。
我现在想用程序去关闭它,就是说可能要进行备份文件什么的时候,想暂不让它运行,我现在都是手工去任务管理器中kill的!
我不知道怎么写个bat程序,处理下?


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

请几位大侠提示下
jk88811 2007-11-20
  • 打赏
  • 举报
回复
while(!isFinished)

楼上真能整, 另外楼主, 任务管理器Kill的是进程不是线程
ftj237 2007-11-20
  • 打赏
  • 举报
回复
需要做到两点,首先要改一下你的while(true),加个标志exitflag 比如while(!exitflag),其次由于你是要重新执行一个java程序,所以涉及到进程之间的通信,有两种方式,一种是共享内存,一种是通过socket,共享内存比较麻烦,我觉得socket最简单,在你的原来那个程序里起一个socketserver,一旦收到连接,就改变exitflag,然后写一个kill程序,用socket连接你的socketserver,不就OK了?
http://www.10zhizui.cn

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧