从我在Java中使用线程的时间开始,我发现了这两种编写线程的方法:
用implements Runnable:
public class MyRunnable implements Runnable {
public void run() {
//Code
}
}
//Started with a "new Thread(new MyRunnable()).start()" call
Run Code Online (Sandbox Code Playgroud)
或者,用extends Thread:
public class MyThread extends Thread {
public MyThread() {
super("MyThread");
}
public void run() {
//Code
}
}
//Started with a "new MyThread().start()" call
Run Code Online (Sandbox Code Playgroud)
这两个代码块有什么显着差异吗?
创建后台线程的最佳方法是什么,每15分钟运行一次以从数据库中获取数据?
下面是我所拥有的代码,我认为它在生产中会正常工作,但是我还有其他更好的方法或我应该注意的事情吗?
private static void checkDatabaseEveryXMinutes() {
new Thread() {
public void run() {
while (true) {
try {
Thread.sleep(checkingAfterEveryXMinutes);
getDataFromDatabase();
} catch (InterruptedException ex) {
//log here
} catch (Exception e) {
//log here
}
}
}
}.start();
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码有什么不利之处.ScheduledExecutorService与TimerTask的比较如何?
哪种方式更好?
如果有更好的方法,我会对此代码的任何示例基础表示赞赏.