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

a7qyws3x  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(135)

我正在创建一个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(); 应用程序从不运行 return isValid;. 所以当我使用 .join() ,如果我将其删除,则该方法将在线程完成之前返回。如何解决此问题?
我希望该方法在返回 isValid 在方法的底部。
有什么想法吗?
我还在寻找解决办法。我怎样才能让这是另一种让它继续工作的方法?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题