CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 扩展类

请教:线程设计问题,请大家帮忙,来者有分

楼主banneryue(烦了,累了,厌了,倦了)2004-09-04 15:22:23 在 Java / J2SE / 扩展类 提问

有这样一个线程问题(也许不是线程问题@_@)  
   
  1.我需要在一个主程序中控制三个程序,主程序启动可以启动三个程序(需要启动的程序在启动主程序的时候指定)  
  2.主程序接受用户的输入以便来决定停止三个程序中的哪一个程序  
  3.如果请求停止的程序的事务没有处理完成,那么需要该事物处理完成后将该程序停止  
  备注:主程序启动的三个程序是轮询程序  
   
  请大家给点设计的思路,谢谢!  
  问题点数:100、回复次数:16Top

1 楼shangqiao(伤桥(千万不要理解为我可怜桥,是“伤心桥下”的缩写))回复于 2004-09-04 15:49:25 得分 2

"主程序启动的三个程序是轮询程序",请问是什么意思,他论询什么Top

2 楼CJMaster(新兵)回复于 2004-09-04 18:12:36 得分 2

upTop

3 楼007JavaKing(乖乖咙的咚)回复于 2004-09-04 20:10:42 得分 2

怎么搞的?Top

4 楼riverwater(小河流水)回复于 2004-09-04 20:24:08 得分 50

很简单啊。你已经基本说明白了。  
  一个主控类,三个线程类(当然可能是一个,被你示例化了三份)。  
  主控类用来调用/运行三个线程类、接收用户输入、停止指定线程类。  
  线程类是自循环执行,当退出条件满足,则退出  
   
  大概写了一个流程性质的东西,供参考  
   
  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;  
  }  
  }Top

5 楼alpha15(奥法)回复于 2004-09-05 02:37:14 得分 5

停止线程可以直接用thread1.stop();Top

6 楼taoxianxue(--孤独的徘徊者--)回复于 2004-09-05 06:16:53 得分 2

学习中~~~~~~~~~~Top

7 楼opencsdn(虚心求教)回复于 2004-09-05 09:26:13 得分 10

问题1:在主线程中启动三个线程没什么问题.  
  问题2:给三个线程各配一个ID,根据输入终止Thread.stop();  
  问题3:你把三个线程将要完成的任务放在它的run()方法时,如果处理完了,这个线程也就自动结束了所以不需要人为终止.Top

8 楼ntzls()回复于 2004-09-05 09:42:20 得分 2

polling?Top

9 楼soupeven(竣杰)回复于 2004-09-05 09:43:46 得分 2

关注一下  
  Top

10 楼riverwater(小河流水)回复于 2004-09-05 19:25:44 得分 10

>>回复人:   alpha15(奥法)   (   )   信誉:100    
  >>停止线程可以直接用thread1.stop();  
  虽然使用Stop可以强制终止一个线程,但是java2中已经不推荐这样做了,属于deprecated的。还是判断退出条件相对好一点点……Top

11 楼javahw(一)回复于 2004-09-05 19:37:16 得分 0

我部门正在招聘JAVA工程师,要求软件基础良好,学习能力强,熟悉J2SE。如有在深圳、青岛、烟台的朋友感兴趣请把简历发给我:  
      liufrank@huawei.com      
       
  Top

12 楼samsung45()回复于 2004-09-05 19:45:43 得分 2

另外补充一下,如果你希望这个程序是健壮的,最好加入synchronized机制。Top

13 楼jiangnanyuzi(江南愚子)回复于 2004-09-05 21:54:17 得分 5

riverwater(小河流水)的方案是可行的,一点改进建议:  
  1.private   volatile   boolean   isStop   =   false;  
  2.轮询是不建议采用的方式。所谓轮询是指类似下列的代码:  
      while(某个条件不满足){  
          sleep(1000);  
      }  
      使用while循环始终查询某个条件是否满足,不满足就休眠一段时间,直到等待条件满足为止。这样会占用更多CPU资源,建议采用的方法是用wait()/notifyAll()取代轮询。  
      while(某个条件不满足){  
          object1.wait();  
      }  
      而在其它线程中当该条件满足时通过   object1.notifyAll()   唤醒该线程。  
  Top

14 楼zgysc(翠湖寒)回复于 2004-09-06 08:17:28 得分 2

结束线程最好不要直接调用stop()方法,,你可以加上判断   isAlive(),再用stopTop

15 楼ipconfiger(小李不冲动)回复于 2004-09-06 08:32:16 得分 2

程序应该是进程,这个应该属于进程调度哦Top

16 楼chan2chen(蓝忆雨夜)回复于 2004-09-06 23:45:30 得分 2

学习。。。。。。Top

相关问题

  • 再次贴出:如何在W2K下设计多线程服务!(提示者均有分)
  • 高分求<<win32多线程程序设计>>源码
  • 高分求《Win32多线程程序设计源代码》
  • 高分求<<Win32多线程程序设计源代码>>
  • 线程问题。急!来者有分!
  • 多线程,解决者100分相送......
  • 求WIN32多线程程序设计(候捷)的附带光盘源码!!!!!!!!!!高分
  • 谁有侯捷译的<<WIN32多线程程序设计>>源码?高分相送!
  • 操作系统线程设计
  • 多线程并发服务器设计

关键词

  • 线程
  • 主程序
  • 程序
  • isstop
  • tloopthread
  • 停止
  • 启动
  • 条件
  • 满足
  • 问题

得分解答快速导航

  • 帖主:banneryue
  • shangqiao
  • CJMaster
  • 007JavaKing
  • riverwater
  • alpha15
  • taoxianxue
  • opencsdn
  • ntzls
  • soupeven
  • riverwater
  • samsung45
  • jiangnanyuzi
  • zgysc
  • ipconfiger
  • chan2chen

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo