Solutions to Java non thread safety problems
•
Java
package ch14; public class LoginCheck { private static String username; private static String password; public static void doPost(String _username,String _password) { try { username=_username; if (username.equals("admin")) { Thread.sleep(5000); } password=_password; System.out.println("username="+username+"password="+password); } catch(InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
package ch14; public class LoginThreadA extends Thread { public void run() { LoginCheck.doPost("admin","admin"); } }
package ch14; public class LoginThreadB extends Thread { public void run() { LoginCheck.doPost("root","root"); } }
package ch14; public class Test07 { public static void main(String[] args) { LoginThreadA a=new LoginThreadA(); a.run(); //启动线程LoginThreadA LoginThreadB b=new LoginThreadB(); b.run(); //启动线程LoginThreadB } }
username=root password=admin username=root password=root
package ch14; public class LoginCheck { private static String username; private static String password; synchronized public static void doPost(String _username,String _password) { try { username=_username; if (username.equals("admin")) { Thread.sleep(5000); } password=_password; System.out.println("username="+username+"password="+password); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
username=admin password=admin username=root password=root
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码