2017-10-14 101 views
0

假設有Spring引導Web應用程序,其中有2個映射爲@Controller和@Service的類。服務被注入到控制器的領域。我需要我的服務每秒運行一次任務來更新一些外部數據。這段代碼有什麼問題嗎?春季服務週期性任務

@Component 
public class MyService implements Runnable{ 
    public MyService() { 
     new Thread(this).start(); 
    } 

    @Override 
    public void run() { 
     while (true) { 
      try { 
       Thread.sleep(1000); 
       // operations here 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
+2

你見過https://spring.io/guides/gs/scheduling-tasks/嗎? – jonrsharpe

+0

您可以使用彈簧石英做到這一點 –

回答

0

雖然有很多創建任務的方法,但使用作業或彈簧任務調度程序,下面是一種直接的方法。

下面的任務將每秒運行一次。

Timer timer = new Timer(); 
    timer.schedule(new TimerTask() { 

     @Override 
     public void run() { 
      System.out.println("hello"); 
     } 
    }, 0, 1000); // o is delay time after which it starts, 1000 is time interval 

或者您可能想要參考here來實現彈簧任務調度器。