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

}

转载于:https://www.cnblogs.com/tsdblogs/p/8758119.html

synchronized(二)相关推荐

  1. java synchronized 使用_Java中synchronized的使用实例

    Java中synchronized的使用实例 synchronized关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C.D等)正在用这个 ...

  2. 死磕synchronized五:系统剖析轻量级锁

    哈喽,大家好,我是江湖人送外号[道格牙]的子牙老师. 近期准备写一个专栏:从Hotspot源码角度剖析synchronized.前前后后大概有10篇,会全网发,写完后整理成电子书放公众号供大家下载.对 ...

  3. java数据同步处理_Java如何处理多线程的数据同步问题

    在这里写这种文章好奇怪,先用作笔记吧 Java中有如下的方法来处理代码块的并发访问问题: 一是关键字synchronized 二是加锁(锁对象,条件对象) Java给每一个对象都提供了一个内部锁,在方 ...

  4. Java 高并发下的实践

    一.使用的技术 HashMap ConcurrentHashMap Lock ReadWriteLock synchronized 二.一百万并发下的组合 ConcurrentLockMap /** ...

  5. java多线程生产者与消费者案例_多线程操作实例——生产者与消费者

    面对多线程学习生产者与消费者是最基本的实例 对于java后端开发的人员必须要掌握,还有考研考试计算机操作系统的同鞋. 下面是三个实例对于生产者与消费者的的例子,层层递进,逐步解决问题. 问题:生产者- ...

  6. ConcurrentHashMap简介

    一.jdk1.8之前的数据结构: 1.默认情况下会有16个区段 Segment数组 Segment[16] 2.每次每个区段Segment中会保存若干个散列桶,每次散列桶长度扩容成2^n次方的长度. ...

  7. Java期末考试试题及参考答案(12)

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 一.填空题 1.实现多线程的两种方式是继承________类和实现________接口. 2. ...

  8. JUC系列(二)回顾Synchronized关键字

    多线程一直Java开发中的难点,也是面试中的常客,趁着还有时间,打算巩固一下JUC方面知识,我想机会随处可见,但始终都是留给有准备的人的,希望我们都能加油!!! 沉下去,再浮上来,我想我们会变的不一样 ...

  9. java对象头_我的并发编程(二):java对象头以及synchronized升级过程

    一.概述 研究java对象头的目的是详细分析Java的synchronized锁的升级过程,因为synchronized在锁升级的时候,就是依赖对象头的信息来决定的.本博文针对64位的操作系统来对Ja ...

最新文章

  1. UT2416 wince 6.0 调试LCD35 触摸驱动参考
  2. access 导入 txt sql语句_[内附完整源码和文档] 基于C#和Access的智能聊天机器人
  3. 左神算法:复制含有随机指针节点的链表 / 复杂链表的复制(Java版本)
  4. 20、java中的类加载机制
  5. sqlserver 存储过程 C#调用 实现从数据库Get数据
  6. 存储图片到第三方云服务器
  7. 基于知识图谱和图卷积神经网络的应用和开发
  8. 《Shell脚本学习指南》
  9. Android回声消除调研 20220321
  10. HTML+CSS+JavaScript七夕情人节表白网页【樱花雨3D相册】超好看
  11. Win 10 深度隐藏文件夹命令
  12. 计算机配置内存容量怎么调,如何设置电脑虚拟内存,电脑虚拟内存设置多少最合理?...
  13. wordpress模板WP主题安装失败的解决办法
  14. 用浏览器访问防火墙提示建立连接失败的有点总结
  15. 运行项目遇到:该网页无法正常运作,localhost将您重定向的次数过多时的解决方案
  16. clear在c语言中用法,clear的用法总结大全
  17. base64编码解码器【C++】
  18. python+opencv实现NCC模板旋转匹配(图像处理)
  19. 骨龄测试软件app_【测试工具】这些APP实用测试工具,不知道你就out了!
  20. 计算机描述不可用win10,解决win10打印机不可用描述的方法

热门文章

  1. python编程工具p-5款Python程序员高频使用开发工具推荐
  2. python代码案例详解-我用Python抓取了7000 多本电子书案例详解
  3. python读数据-python数据读写
  4. python3安装-mac python3 轻松安装教程
  5. python第三方库numpy-谁能介绍下Python生态中的第三方库NumPy
  6. python测试开发自学教程-自动化平台测试开发:Python测试开发实战_PDF电子书
  7. java好还是python好-学python好还是java好
  8. php和python区别-php和python什么区别
  9. 关于python中程序流程结构-Python语言程序设计(第4章:程序结构设计)
  10. 自学网python教程视频-Python爬虫之Django视频教程