4.4 变量的线程安全分析

4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析

成员变量例子

class ThreadUnsafe {
      ArrayList<String> list = new ArrayList<>();
      public void method1(int loopNumber) {
            for (int i = 0; i < loopNumber; i++) {
                  // { 临界区, 会产生竞态条件
                        method2();
                        method3();
                  // } 临界区
             }
      }
      private void method2() {
            list.add("1");
       }
      private void method3() {
            list.remove(0);
       }
}
static final int THREAD_NUMBER = 2;
static final int LOOP_NUMBER = 200;
public static void main(String[] args) {
ThreadUnsafe test = new ThreadUnsafe();
for (int i = 0; i < THREAD_NUMBER; i++) {
      new Thread(() -> {
                  test.method1(LOOP_NUMBER);
                   }, "Thread" + i).start();
             }
}

4.4 变量的线程安全分析
4.4 变量的线程安全分析

将list变量改为局部变量

class ThreadSafe {
      public final void method1(int loopNumber) {
            ArrayList<String> list = new ArrayList<>();
            for (int i = 0; i < loopNumber; i++) {
                  method2(list);
                  method3(list);
             }
       }
        private void method2(ArrayList<String> list) {
            list.add("1");
        }
        private void method3(ArrayList<String> list) {
            list.remove(0);
       }
}

4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析

实例

4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析
4.4 变量的线程安全分析

相关文章:

  • 2022-12-23
  • 2021-06-04
  • 2021-05-03
  • 2022-03-06
  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
  • 2021-08-02
猜你喜欢
  • 2022-03-02
  • 2021-06-06
  • 2022-01-05
  • 2022-12-23
  • 2021-08-13
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案