线程安全指的是多线程的安全。如果一段程序可以保证被多线程访问后仍能保持正确性,那么程序就是线程安全的。一般来说,线程安全注重的是多线程开发中的共享数据的安全。就比如下面这段代码:
public class ThreadSafety implements Runnable{ //共享数据 public static int i = 0; public void increase(){ for (int j= 0;j<10; j++){ i++; } } @Override public void run() { increase(); } public static void main(String[] args) throws Exception{ ThreadSafety demo = new ThreadSafety(); Thread t1 = new Thread(); Thread t2 = new Thread(); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println(i); } }两个线程 t1 和 t2 同时开启,执行run方法,在我们的预想中,如果是线程安全的话,那么main的执行结果应该是20,但是因为 i 是共享数据,而程序没有对 i 的操作做同步的处理,最终运行的结果并不是20,所以这种情况就不是线程安全的情况。
解决的办法也比较简单,可以利用synchronized关键字来修饰方法或代码块,这部分的知识也是并发编程中非常重要的一块,当然,本文就不探究了,之后单独写篇文章出来细说。
参考:《实战Java:高并发程序设计》