*
1.什么是线程安全?*
线程安全就是当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。
2.举例说明
public class MyThread extends Thread{
private int count = 5 ;
//没加锁
public void run(){
count--;
System.out.println(this.currentThread().getName() + " count = "+ count);
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
Thread t1 = new Thread(myThread,"t1");
Thread t2 = new Thread(myThread,"t2");
Thread t3 = new Thread(myThread,"t3");
Thread t4 = new Thread(myThread,"t4");
Thread t5 = new Thread(myThread,"t5");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}
输出结果
t2 count = 3
t3 count = 2
t1 count = 3
t4 count = 1
t5 count = 0
而在run方法上加了synchronized关键字后,输出结果为
t1 count = 4
t2 count = 3
t3 count = 2
t4 count = 1
t5 count = 0