社区
Java SE
帖子详情
请教:线程设计问题,请大家帮忙,来者有分
banneryue
2004-09-04 03:22:23
有这样一个线程问题(也许不是线程问题@_@)
1.我需要在一个主程序中控制三个程序,主程序启动可以启动三个程序(需要启动的程序在启动主程序的时候指定)
2.主程序接受用户的输入以便来决定停止三个程序中的哪一个程序
3.如果请求停止的程序的事务没有处理完成,那么需要该事物处理完成后将该程序停止
备注:主程序启动的三个程序是轮询程序
请大家给点设计的思路,谢谢!
...全文
213
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个帖子
今日偶然翻到,感慨万千 1:申述:版主,是否扣了我的专家分? 2:100分急求,随机输出十个小写字母,但是,要求这十个字母不相同 3:求Sn=a+aa+aaa+…+aaa…a(n个a)之值 4:数组题 望高手
帮忙
! 5:呵呵,来推荐一下我的网站,本站提供大量当今流行的免费的音乐和免费电影,常用软件、游戏、精美图库下载,希望对网友有帮助!顺便散分! 6:VBA
请
教
怎
CSDN回帖得分大全(近两年)
√vs2005调用dll的时候Initialize()函数返回错误 [VC/MFC 基础类] 40 ylongwu 05-21 20:486 ylongwu06-28 13:42管理√为什么我创建登陆框之后,然后获取登陆框的数据时候总是出现非法操作! [VC/MFC 界面] 40 chencheng8095 05-23 00:2911 xianglitian06-10 11:51管理√CFileFind::FindFile 支持通配符么? [VC/MFC 基础类] 100 wysbk002 05-22
C++面试题
1.构造一个类MySingleton,使该类只能存在一个实例. 思路: 将构造函数写为private的,然后通过一个成员静态函数来调用构造函数即可:) 例: #include "iostream.h" class MySingleton { private: static MySingleton* _instance; MySingleton(){ cout ~MyS
WEB开发文档2 总结
转自:http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx怎样将后台生成的在内存中的图象显示到客户端Microsoft IE WebControls下载地址如何在DATAGRID中使用JAVASCRIPT脚本控制DataGrid中连接到下一页显示数据下载中文名文件时保存文件名乱码
问题
关于用ASP.net绘图的
问题
,
请
大虾指教那
【信息科学与工程学】【管理科学】第二十二篇 员工管理和控制算法02
编号定理/规律 (潜规则描述)数学/系统特征算法/策略名称与操作步骤关键参数/变量精度/误差/边界条件/影响因素跨学科方法与控制方法实现目标完整实现步骤 (管理场景应用)典型应用场景优点与局限瓶颈关联知识连接点051“一个唱红脸,一个唱白脸”角色扮演、谈判策略、压力与安抚的交替施加。算法:协作式谈判/管理的角色分化策略 模型:在谈判或管理冲突时,两位管理者(或一方内部两人)分饰对立角色。一人态度强硬、提出高要求、施加压力(“白脸”),另一人态度温和、表示理解、提出折中方案或进行安抚(“红脸”)。目
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章