Java 方法在线程连接时从不返回

Java 方法在线程连接时从不返回,java,android,mysql,multithreading,Java,Android,Mysql,Multithreading,我正在创建一个Android应用程序,其中我有一个使用MySql的登录系统。我正在使用一个线程进行登录 private static boolean isValid = false; public static boolean login(final String username, final String password) { new Thread(new Runnable() { @Override public void run() {

我正在创建一个Android应用程序,其中我有一个使用MySql的登录系统。我正在使用一个线程进行登录

private static boolean isValid = false;
public static boolean login(final String username, final String password) {

    new Thread(new Runnable() {
        @Override
        public void run() {
            try{
                Class.forName("com.mysql.jdbc.Driver");
                Connection con= DriverManager.getConnection(
                        "jdbc:mysql://*****/***","*****","******");
                Statement stmt=con.createStatement();
                String query = "SELECT passHash FROM test WHERE username = '"+ username +"'";
                ResultSet rs=stmt.executeQuery(query);
                System.out.println(query + " <----");

                while(rs.next()) {
                    isValid = BCrypt.checkpw(password, rs.getString(1));

                    System.out.println(isValid + "<.daspdfsafpa");
                }
                System.out.println(isValid +" 1");
                con.close();
                System.out.println(isValid +" 2");
            }
            catch(Exception e)
            {
                System.out.println(e);
            }
        }
    }).start();

    try{
        Thread.currentThread().join();
    }
    catch(InterruptedException e){
        System.out.println(e.getMessage());
    }

    System.out.println("blafasf");
    return isValid;
}
当我使用Thread.currentThread.join时;该应用程序从未运行“返回有效”;。因此,当我使用.join时,我的方法将永远不会返回,如果我删除它,那么该方法将在线程完成之前返回。如何解决此问题

我希望该方法在返回方法底部的isValid之前,先运行线程

有什么想法吗


我还在寻找解决办法。如何使这是另一种仍然有效的方法?

您需要使用对执行查询和登录验证以及调用的线程的引用。在该线程上加入。顺便说一句,为什么要将Runnable嵌套到线程中?@marekful,比如Thread th=new Thread;?使用Runnable是我能找到这个工作的唯一方法。否则我会从MySQL中得到一个错误。是的,然后当执行th.join时,它会导致主线程等待th终止。@marekful无法使MySQL以这种方式工作。。。我会做个测试,然后寄给你。稍等。@marekful**BEGIN嵌套异常**java.net.SocketException消息:android.os.NetworkOnMainThreadException STACKTRACE:这样做时,我遇到了这个错误。。检查我的临时编辑