zoukankan      html  css  js  c++  java
  • 同步代码块解决多线程安全问题

    同步函数和同步代码块的区别: 
    同步函数使用的锁是固定的this。当线程任务只需要一个同步时用。 
    同步代码块使用的锁可以是任意对象。当线程任务中需要多个同步时,必须用这个。(较常用)

    同步代码块实例: 

    class Bank{ 
      private int sum; 
      private Object obj = new Object(); 
      void add(int num) { 
        synchronized (obj){ //加锁解决,可换成this。如果是静态类这里就用类名点class。 
          sum = sum + num; 
          System.out.println(sum + "**" + Thread.currentThread().getName()); 
        } 
      } 
    } 
    class Consumer implements Runnable{ 
      private Bank b = new Bank(); 
      public void run() { 
        for (int i = 0; i < 3; i++) { 
          b.add(100); 
        } 
      } 
    } 
    public class ThreadTest { 
      public static void main(String[] args) { 
        Consumer c = new Consumer(); 
        Thread t1 = new Thread(c); 
        Thread t2 = new Thread(c); 
        t1.start(); 
        t2.start(); 
      } 
    }
  • 相关阅读:
    [译]Angular2 和TypeScript -- 一次简要的预览
    浅谈沟通技巧
    浅谈面试官的“被面试”技能
    2020个人总结
    浅谈任务委托与团队建设
    2020已读书单
    2019年个人总结
    目标分析与制定算法
    X短期项目总结
    寻求改变
  • 原文地址:https://www.cnblogs.com/yigechengxuyuan/p/8399343.html
Copyright © 2011-2022 走看看