//本类模拟成一个Servlet组件 public class LoginServlet { private static String usernameRef; private static String passwordRef; synchronized public static void doPost(String username, String password) { try { usernameRef = username; if (username.equals("a")) { Thread.sleep(3000); } passwordRef = password; System.out.println("username=" + usernameRef + " password=" + password); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
public class ALogin extends Thread { @Override public void run() { LoginServlet.doPost("a", "aa"); } }
public class BLogin extends Thread { @Override public void run() { LoginServlet.doPost("b", "bb"); } }
public class Run { public static void main(String[] args) { ALogin a = new ALogin(); a.start(); BLogin b = new BLogin(); b.start(); } }会出现下面两种问题
加上synchronized后打印显示正常