社区
Java SE
帖子详情
请教:线程设计问题,请大家帮忙,来者有分
banneryue
2004-09-04 03:22:23
有这样一个线程问题(也许不是线程问题@_@)
1.我需要在一个主程序中控制三个程序,主程序启动可以启动三个程序(需要启动的程序在启动主程序的时候指定)
2.主程序接受用户的输入以便来决定停止三个程序中的哪一个程序
3.如果请求停止的程序的事务没有处理完成,那么需要该事物处理完成后将该程序停止
备注:主程序启动的三个程序是轮询程序
请大家给点设计的思路,谢谢!
...全文
220
16
打赏
收藏
请教:线程设计问题,请大家帮忙,来者有分
有这样一个线程问题(也许不是线程问题@_@) 1.我需要在一个主程序中控制三个程序,主程序启动可以启动三个程序(需要启动的程序在启动主程序的时候指定) 2.主程序接受用户的输入以便来决定停止三个程序中的哪一个程序 3.如果请求停止的程序的事务没有处理完成,那么需要该事物处理完成后将该程序停止 备注:主程序启动的三个程序是轮询程序 请大家给点设计的思路,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chan2chen
2004-09-06
打赏
举报
回复
学习。。。。。。
ipconfiger
2004-09-06
打赏
举报
回复
程序应该是进程,这个应该属于进程调度哦
zgysc
2004-09-06
打赏
举报
回复
结束线程最好不要直接调用stop()方法,,你可以加上判断 isAlive(),再用stop
江南愚子
2004-09-05
打赏
举报
回复
riverwater(小河流水)的方案是可行的,一点改进建议:
1.private volatile boolean isStop = false;
2.轮询是不建议采用的方式。所谓轮询是指类似下列的代码:
while(某个条件不满足){
sleep(1000);
}
使用while循环始终查询某个条件是否满足,不满足就休眠一段时间,直到等待条件满足为止。这样会占用更多CPU资源,建议采用的方法是用wait()/notifyAll()取代轮询。
while(某个条件不满足){
object1.wait();
}
而在其它线程中当该条件满足时通过 object1.notifyAll() 唤醒该线程。
soupeven
2004-09-05
打赏
举报
回复
关注一下
ntzls
2004-09-05
打赏
举报
回复
polling?
opencsdn
2004-09-05
打赏
举报
回复
问题1:在主线程中启动三个线程没什么问题.
问题2:给三个线程各配一个ID,根据输入终止Thread.stop();
问题3:你把三个线程将要完成的任务放在它的run()方法时,如果处理完了,这个线程也就自动结束了所以不需要人为终止.
samsung45
2004-09-05
打赏
举报
回复
另外补充一下,如果你希望这个程序是健壮的,最好加入synchronized机制。
javahw
2004-09-05
打赏
举报
回复
我部门正在招聘JAVA工程师,要求软件基础良好,学习能力强,熟悉J2SE。如有在深圳、青岛、烟台的朋友感兴趣请把简历发给我:
liufrank@huawei.com
riverwater
2004-09-05
打赏
举报
回复
>>回复人: alpha15(奥法) ( ) 信誉:100
>>停止线程可以直接用thread1.stop();
虽然使用Stop可以强制终止一个线程,但是java2中已经不推荐这样做了,属于deprecated的。还是判断退出条件相对好一点点……
taoxianxue
2004-09-05
打赏
举报
回复
学习中~~~~~~~~~~
alpha15
2004-09-05
打赏
举报
回复
停止线程可以直接用thread1.stop();
riverwater
2004-09-04
打赏
举报
回复
很简单啊。你已经基本说明白了。
一个主控类,三个线程类(当然可能是一个,被你示例化了三份)。
主控类用来调用/运行三个线程类、接收用户输入、停止指定线程类。
线程类是自循环执行,当退出条件满足,则退出
大概写了一个流程性质的东西,供参考
public class TMainClass{
public static void main(String[] args){
根据参数启动TloopThread
启动线程
thread1=new TloopThread();
thread1.start();
接受客户输入
if (客户要停止线程1){
thread1.setStop();
}
}
}
class TloopThread extends Thread{
boolean isStop=false;
public void run(){
while(!isStop){
//循环执行
}
}
//设置停止
public void setStop(){
isStop=true;
}
}
无欲则钢
2004-09-04
打赏
举报
回复
怎么搞的?
都转行吧
2004-09-04
打赏
举报
回复
up
shangqiao
2004-09-04
打赏
举报
回复
"主程序启动的三个程序是轮询程序",请问是什么意思,他论询什么
我在CSDN参与的3000个帖子
2:100分急求,随机输出十个小写字母,但是,要求这十个字母不相同 3:求Sn=a+aa+aaa+…+aaa…a(n个a)之值 4:数组题 望高手
帮忙
! 5:呵呵,来推荐一下我的网站,本站提供大量当今流行的免费的音乐和免费电影,...
CSDN回帖得分大全(近两年)
请
教
个
问题
,如何判断串口被占用呢?很急,谢谢大家了。 [VC/MFC 基础类] √ 一段在服务中创建进程的源代码,没看明白思路,恳
请
各位给指点迷津~~ [VC/MFC 基础类] √ 怎样将1位的图片...
C++面试题
给n个点,求凸包
问题
---hiahia,牛X一把,用二分作的! 33.堆排序 ---明确地告诉了他,俺忘了 34.四则运算 (1)给一个前缀表达式,然后求解 ---勉强做上来了 (2)给一个中缀表达式,求解 ---更勉强的作上来了 35.正则...
WEB开发文档2 总结
转自:http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx怎样将后台生成的在内存中的图象显示到客户端Microsoft IE WebControls下载地址如何在DATAGRID中使用JAVASCRIPT脚本控制DataGrid...
请
大虾指教那
【信息科学与工程学】【管理科学】第二十二篇 员工管理和控制算法02
模型:在谈判或管理冲突时,两位管理者(或一方内部两人)分饰对立角色。一人态度强硬、提出高要求、施加压力(“白脸”),另一人态度温和、表示理解、提出折中方案或进行安抚(“红脸”)。目
Java SE
62,622
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章