zoukankan      html  css  js  c++  java
  • synchronized(二)

    package com.bjsxt.base.sync002;
    /**
    * 关键字synchronized取得的锁都是对象锁,而不是把一段代码(方法)当做锁,
    * 所以代码中哪个线程先执行synchronized关键字的方法,哪个线程就持有该方法所属对象的锁(Lock),
    *
    * 在静态方法上加synchronized关键字,表示锁定.class类,类一级别的锁(独占.class类)。
    * @author alienware
    *
    */
    public class MultiThread {

    private static int num = 0;

    /** static */
    public static synchronized void printNum(String tag){
    try {

    if(tag.equals("a")){
    num = 100;
    System.out.println("tag a, set num over!");
    Thread.sleep(1000);
    } else {
    num = 200;
    System.out.println("tag b, set num over!");
    }

    System.out.println("tag " + tag + ", num = " + num);

    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }

    //注意观察run方法输出顺序
    public static void main(String[] args) {

    //俩个不同的对象
    final MultiThread m1 = new MultiThread();
    final MultiThread m2 = new MultiThread();

    Thread t1 = new Thread(new Runnable() {
    public void run() {
    m1.printNum("a");
    }
    });

    Thread t2 = new Thread(new Runnable() {

    public void run() {
    m2.printNum("b");
    }
    });

    t1.start();
    t2.start();

    }

    运行结果为:

    tag a, set num over!
    tag a, num = 100
    tag b, set num over!
    tag b, num = 200






    }

  • 相关阅读:
    maven settings
    java.util.Base64
    Centos 7 下 LAMP 部署
    Cisco N3K VPC+HSRP+ospf 配置
    centos 7 下多网卡绑定+ vlan 网卡配置
    centos 7 下 cobbler 安装
    hive0.12 rcfile gzip 测试
    Hive内部表外部表转化分析(装)
    hadoop2.2.0 + hbase 0.94 + hive 0.12 配置记录
    hbase 问题记录
  • 原文地址:https://www.cnblogs.com/tsdblogs/p/8758119.html
Copyright © 2011-2022 走看看