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
}
转载于:https://www.cnblogs.com/tsdblogs/p/8758119.html
synchronized(二)相关推荐
- java synchronized 使用_Java中synchronized的使用实例
Java中synchronized的使用实例 synchronized关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C.D等)正在用这个 ...
- 死磕synchronized五:系统剖析轻量级锁
哈喽,大家好,我是江湖人送外号[道格牙]的子牙老师. 近期准备写一个专栏:从Hotspot源码角度剖析synchronized.前前后后大概有10篇,会全网发,写完后整理成电子书放公众号供大家下载.对 ...
- java数据同步处理_Java如何处理多线程的数据同步问题
在这里写这种文章好奇怪,先用作笔记吧 Java中有如下的方法来处理代码块的并发访问问题: 一是关键字synchronized 二是加锁(锁对象,条件对象) Java给每一个对象都提供了一个内部锁,在方 ...
- Java 高并发下的实践
一.使用的技术 HashMap ConcurrentHashMap Lock ReadWriteLock synchronized 二.一百万并发下的组合 ConcurrentLockMap /** ...
- java多线程生产者与消费者案例_多线程操作实例——生产者与消费者
面对多线程学习生产者与消费者是最基本的实例 对于java后端开发的人员必须要掌握,还有考研考试计算机操作系统的同鞋. 下面是三个实例对于生产者与消费者的的例子,层层递进,逐步解决问题. 问题:生产者- ...
- ConcurrentHashMap简介
一.jdk1.8之前的数据结构: 1.默认情况下会有16个区段 Segment数组 Segment[16] 2.每次每个区段Segment中会保存若干个散列桶,每次散列桶长度扩容成2^n次方的长度. ...
- Java期末考试试题及参考答案(12)
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 一.填空题 1.实现多线程的两种方式是继承________类和实现________接口. 2. ...
- JUC系列(二)回顾Synchronized关键字
多线程一直Java开发中的难点,也是面试中的常客,趁着还有时间,打算巩固一下JUC方面知识,我想机会随处可见,但始终都是留给有准备的人的,希望我们都能加油!!! 沉下去,再浮上来,我想我们会变的不一样 ...
- java对象头_我的并发编程(二):java对象头以及synchronized升级过程
一.概述 研究java对象头的目的是详细分析Java的synchronized锁的升级过程,因为synchronized在锁升级的时候,就是依赖对象头的信息来决定的.本博文针对64位的操作系统来对Ja ...
最新文章
- UT2416 wince 6.0 调试LCD35 触摸驱动参考
- access 导入 txt sql语句_[内附完整源码和文档] 基于C#和Access的智能聊天机器人
- 左神算法:复制含有随机指针节点的链表 / 复杂链表的复制(Java版本)
- 20、java中的类加载机制
- sqlserver 存储过程 C#调用 实现从数据库Get数据
- 存储图片到第三方云服务器
- 基于知识图谱和图卷积神经网络的应用和开发
- 《Shell脚本学习指南》
- Android回声消除调研 20220321
- HTML+CSS+JavaScript七夕情人节表白网页【樱花雨3D相册】超好看
- Win 10 深度隐藏文件夹命令
- 计算机配置内存容量怎么调,如何设置电脑虚拟内存,电脑虚拟内存设置多少最合理?...
- wordpress模板WP主题安装失败的解决办法
- 用浏览器访问防火墙提示建立连接失败的有点总结
- 运行项目遇到:该网页无法正常运作,localhost将您重定向的次数过多时的解决方案
- clear在c语言中用法,clear的用法总结大全
- base64编码解码器【C++】
- python+opencv实现NCC模板旋转匹配(图像处理)
- 骨龄测试软件app_【测试工具】这些APP实用测试工具,不知道你就out了!
- 计算机描述不可用win10,解决win10打印机不可用描述的方法
热门文章
- python编程工具p-5款Python程序员高频使用开发工具推荐
- python代码案例详解-我用Python抓取了7000 多本电子书案例详解
- python读数据-python数据读写
- python3安装-mac python3 轻松安装教程
- python第三方库numpy-谁能介绍下Python生态中的第三方库NumPy
- python测试开发自学教程-自动化平台测试开发:Python测试开发实战_PDF电子书
- java好还是python好-学python好还是java好
- php和python区别-php和python什么区别
- 关于python中程序流程结构-Python语言程序设计(第4章:程序结构设计)
- 自学网python教程视频-Python爬虫之Django视频教程