[英]Calling method of Another class from run() method
我創建了一個調用 run 方法的調度程序。
@WebListener
public class BaclkgroundJobManager implements ServletContextListener {
private ScheduledExecutorService scheduler;
public void contextInitialized(ServletContextEvent sce) {
scheduler=Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new SomeMinuteJob(), 0, 5, TimeUnit.MINUTES);
}
}
這要求
public class SomeMinuteJob implements Runnable {
@Override
public void run() {
System.out.print("Inside run method");
ReadData obj= new ReadData();
obj.readData();
System.out.println("After reading data");
}
}
我在下面創建了ReadData
class。
public class ReadData
{
public void readData()
{
System.out.println("I am inside readdata");
}
}
因此,我在 run() 方法中創建了ReadData
的 object,並調用了它的方法。 但是 ReadData class 沒有得到控制。 它沒有打印 readData() 方法中的內容。 即使我創建了構造函數並放置了一些內容,但即使那不是打印。 我該如何解決? 控制進入內部運行,它正在打印Inside run method
ScheduledExecutorService
的一個常見問題是,如果調度的命令拋出異常,異常就會被默默吞下。 問題中的代碼似乎沒有拋出異常,但在更復雜的代碼中很難避免(例如意外的 NullPointerExceptions)
一個快速解決方法是將所有 Runnable.run 方法放在 try-catch 塊中:
public class SomeMinuteJob implements Runnable {
@Override
public void run() {
try {
System.out.print("Inside run method");
ReadData obj = new ReadData();
obj.readData();
System.out.println("After reading data");
} catch (Exception e) {
// Log exception
e.printStackTrace();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.