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(); 
      } 
    }
  • 相关阅读:
    VBA Exit Do语句
    VBA Exit For语句
    VBA Do...While循环
    VBA While Wend循环
    VBA For Each循环
    VBA for循环
    sqoop 教案
    Hbase 取数据 和放数据 使用mr
    Hbase 四种过滤器
    Hbase java API 的方法
  • 原文地址:https://www.cnblogs.com/yigechengxuyuan/p/8399343.html
Copyright © 2011-2022 走看看