Java 方法在线程连接时从不返回
我正在创建一个Android应用程序,其中我有一个使用MySql的登录系统。我正在使用一个线程进行登录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() {
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:这样做时,我遇到了这个错误。。检查我的临时编辑