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
二维码
