如何解决主线程根据当前时间对不同的子线程进行启动和停止的问题,要求不能太耗资源,而且要稳定。 时间调度的工作交给操作系统去做。在UNIX下面使用cron,在windows下面使用at。像你这么写ServerThread,CPU不100%才怪。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有几个问题:1.主线程里应当增加sleep或wait(timeout)等待一会,否则cpu当然会很高。2.不要用interrupt()中断,应该在子线程中用wait()诸塞,然后用notify唤醒。3.子线程的socket连接应该用:Socket conn = new Socket();conn.setKeepAlive(true);conn.connect(new InetSocketAddress("ip", port),timeout);有timeout才能控制连接时间。!!! 我是想用ServerThread作为一个监控程序,要一直运行。就像AWT里的Listener一样,一到时间就触发子线程,并在子线程运行过程中一直监视。最好用java实现,如果只能用操作系统的时间调度,如何调度请说的详细一些,最好举个例子。谢谢 我在主线程中实际上是调用多个子线程,就是每到一定时间就判断前一个子线程是否还在运行,如果运行就杀死它,然后调用另外一个子线程,然后就是重复以上动作。所以调用interrupt()方法。 TO yebinkm(燕雀):首先先说明一点,Thread是不能被重复启动的。就是Thread.start结束之后,不能再调用start重复启动线程。看你的代码想在每天1点和15点启动,可能是会出现问题。不过俺没有仔细看,也没有验证你的代码。:)另外,Java中计时器可以采用java.util.Timer来做(@see java.util.Timer),不过俺还是喜欢系统调度。如果系统提供了相应的功能,就不自己写程序来实现。原因如下:(1) 系统提供的功能已经经过了可靠性的验证;(2) 俺很懒,能少写的地方尽量少写;如果采用系统的定时器(Cron/AT),那么就可以简化你的设计,直接作一个NetSender即可,定时启动这个NetSender程序就可以了。 多谢土哥,可是我不懂“系统定时器(Cron/AT)”,如何使用它们,麻烦您说的详细一些,十分感谢! 如果你在windows(NT)下面,在命令行运行:at /?如果你在unix下面,运行:man cron 关于java连接数据库的问题 对象,类,方法,成员变量 ,它们在内存中是如何分配的 给点意见 学习java的整体认识问题,有不少迷茫,我在这里问下,大家来讨论吧!!! Vector排序 socket链接问题!!急急。。。 为什么没人看我的问题?难道是太长了? 请教大家好的JAVA学习书籍! applet程序在ie6.0中如何才能显示? 简单的改错 求助!!!高手进~~~~~~~~ applet 中怎么得到主机的ip地址
1.主线程里应当增加sleep或wait(timeout)等待一会,否则cpu当然会很高。
2.不要用interrupt()中断,应该在子线程中用wait()诸塞,然后用notify唤醒。
3.子线程的socket连接应该用:
Socket conn = new Socket();
conn.setKeepAlive(true);
conn.connect(new InetSocketAddress("ip", port),timeout);
有timeout才能控制连接时间。!!!
首先先说明一点,Thread是不能被重复启动的。就是Thread.start结束之后,不能再调用start重复启动线程。看你的代码想在每天1点和15点启动,可能是会出现问题。不过俺没有仔细看,也没有验证你的代码。:)另外,Java中计时器可以采用java.util.Timer来做(@see java.util.Timer),不过俺还是喜欢系统调度。如果系统提供了相应的功能,就不自己写程序来实现。原因如下:
(1) 系统提供的功能已经经过了可靠性的验证;
(2) 俺很懒,能少写的地方尽量少写;如果采用系统的定时器(Cron/AT),那么就可以简化你的设计,直接作一个NetSender即可,定时启动这个NetSender程序就可以了。
如果你在unix下面,运行:man cron