如何销毁执行非常长时间操作的线程?
我需要在不设置SQL查询超时的情况下解决此问题。我知道Thread.destroy()
已被弃用。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Sample {
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager
.getConnection("jdbc:mysql://localhost:3306/db");
conn.createStatement().execute("SELECT * FROM some_table");
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
});
t.start();
}
}
答案 0 :(得分:3)
Jon是对的,设置超时是解决问题的正确方法。
但是,您可以在后台运行另一个线程作为计时器,该计时器保存对线程的引用并触发中断。这实际上是一个本土超时!
答案 1 :(得分:1)