时间调度的工作交给操作系统去做。在UNIX下面使用cron,在windows下面使用at。
像你这么写ServerThread,CPU不100%才怪。

解决方案 »

  1.   

    有几个问题:
    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才能控制连接时间。!!!
      

  2.   

    我是想用ServerThread作为一个监控程序,要一直运行。就像AWT里的Listener一样,一到时间就触发子线程,并在子线程运行过程中一直监视。最好用java实现,如果只能用操作系统的时间调度,如何调度请说的详细一些,最好举个例子。谢谢
      

  3.   

    我在主线程中实际上是调用多个子线程,就是每到一定时间就判断前一个子线程是否还在运行,如果运行就杀死它,然后调用另外一个子线程,然后就是重复以上动作。所以调用interrupt()方法。
      

  4.   

    TO yebinkm(燕雀):
    首先先说明一点,Thread是不能被重复启动的。就是Thread.start结束之后,不能再调用start重复启动线程。看你的代码想在每天1点和15点启动,可能是会出现问题。不过俺没有仔细看,也没有验证你的代码。:)另外,Java中计时器可以采用java.util.Timer来做(@see java.util.Timer),不过俺还是喜欢系统调度。如果系统提供了相应的功能,就不自己写程序来实现。原因如下:
    (1) 系统提供的功能已经经过了可靠性的验证;
    (2) 俺很懒,能少写的地方尽量少写;如果采用系统的定时器(Cron/AT),那么就可以简化你的设计,直接作一个NetSender即可,定时启动这个NetSender程序就可以了。
      

  5.   

    多谢土哥,可是我不懂“系统定时器(Cron/AT)”,如何使用它们,麻烦您说的详细一些,十分感谢!
      

  6.   

    如果你在windows(NT)下面,在命令行运行:at /?
    如果你在unix下面,运行:man cron