Java让线程返回一些东西给主线程

标签 java multithreading return

我被困在某件事上,似乎想不出解决办法。我有一个名为 dbSelect 的函数,它会创建一个线程来运行 MySQL 查询并获取 ResultSet,但随后我需要 dbSelect 来获取该 ResultSet 并返回它。这是我所拥有的:

public class Utils {
    public static void dbSelect(String query){
        selectQuery = query;
        Thread selectThread = new selectThreadClass();
        selectThread.start();
    }
}
class selectThreadClass extends Thread {
    public void run(){
        perform();
    }

    public ResultSet perform(){
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = DriverManager.getConnection("jdbc:mysql://localhost/lob/?user=root&password=");

            Statement s = conn.createStatement();
            ResultSet rs = s.executeQuery(Utils.selectQuery);
            return rs;
        }catch (SQLException | InstantiationException | IllegalAccessException | ClassNotFoundException e){
            e.printStackTrace();
            return null;
        }
    }
}

任何人都可以帮我获取它,以便 dbSelect 从线程返回 ResultSet 吗?谢谢!

最佳答案

使用Callable

 public interface Callable<V> {
 V call() throws Exception;
}

关于Java让线程返回一些东西给主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12021938/

相关文章:

.net - 了解 Azure Functions 行为

javascript - 在 JavaScript 中返回多个值?

java - 如何使用java以编程方式检索网页上的文件

java - 方法标记为抽象但未由 javap 显示

带有意外随机数的Java骰子

java - for循环内while循环的时间复杂度

swift - 线程 1 exc_bad_instruction.. 快速错误

c# - msft为什么将Interlocked.Increment(ref uniqueId)与零进行比较?

c++ - 返回 vector 与使用 vector 的参数返回它

Java泛型方法