日期:2014-05-20 浏览次数:20721 次
trButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { timer.schedule(new timertask(loginFrame), 0, 1000*30*loginFrame.getti());//时间间隔30秒 } });
public class timertask extends TimerTask{ private LoginFrame loginFrame; public timertask(LoginFrame loginFrame) { // TODO Auto-generated constructor stub this.loginFrame = loginFrame; } public void run(){ GetcThread getcthread = new GetcThread(loginFrame); Thread t = new Thread(getcthread); t.start(); } }
public class Test { public static void main(String[] args) { try { ThreadTest tt = new ThreadTest(); ThreadTest.flag = true; new Thread(tt).start(); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } ThreadTest.flag = false; try { Thread.sleep(1000); ThreadTest tt1 = new ThreadTest(); ThreadTest.flag = true; new Thread(tt1).start(); } catch (InterruptedException e) { e.printStackTrace(); } } } class ThreadTest implements Runnable{ public static boolean flag = false; public void run(){ while(flag){ try { Thread.sleep(100); System.out.println(Thread.currentThread() + "is running."); } catch (InterruptedException e) { e.printStackTrace(); } } } }
------解决方案--------------------
关闭旧线程后,最好判断下旧线程是否已结束工作状态来决定创建新线程的时机
Thread::isAlive() Thread::getState() ...