2012-01-04 46 views
-1

我该如何销毁执行很长操作的线程?如何在不使用destroy()方法的情况下销毁Java中的线程?

我需要解决这个问题,而不需要为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(); 
    } 

} 
+5

设置超时*是最好的方法。 *为什么*你不能那样做? – 2012-01-04 19:40:52

回答

3

乔恩是正确的,设置超时是解决问题的正确方法。

但是,您可以在后台运行另一个线程作为定时器,该线程持有对线程的引用并触发中断。虽然这实际上是一个本土超时!

1
+0

实际设置查询的超时时间是**“最佳选择”** – 2012-01-04 20:01:23

+0

“我需要解决这个问题,不需要设置SQL查询超时时间” – 2012-01-04 20:03:38

+0

一个不明确的任意要求不会改变什么**最佳选择**是......你的答案意味着它比正确的方式更好,不管它们的要求如何。 **最好的**是一个非常强大的预选赛。 – 2012-01-04 20:04:38

相关问题