Synchronize

对象锁改变
当对一个对象加锁时

如果,对象本身发生改变,那么,持有的锁就不同了
如果,对象本身不改变,那么,依然是同步的

package com.bjsxt.base.sync006;/*** 锁对象的改变问题**/
public class ChangeLock {private String lock = "lock";private void method() {synchronized (lock) {try {System.out.println("当前线程 : " + Thread.currentThread().getName() + "开始");lock = "change lock";Thread.sleep(2000);System.out.println("当前线程 : " + Thread.currentThread().getName() + "结束");} catch (InterruptedException e) {e.printStackTrace();}}}public static void main(String[] args) {final ChangeLock changeLock = new ChangeLock();Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {changeLock.method();}}, "t1");Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {changeLock.method();}}, "t2");t1.start();try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}t2.start();}}

运行


由于,lock改变了
并不是一个锁

锁对象改变,持有的锁就不同了
所以,没有同步

Synchronize对象改变相关推荐

  1. 【TypeScript】防止对象改变

    Object.freeze() 防止对象改变 const 声明并不会真的保护数据不被改变. 为了确保数据不被改变,JavaScript 提供了一个函数 Object.freeze. 任何更改对象的尝试 ...

  2. JavaScript文档对象模型document对象改变Html元素样式属性(5)

    1. document对象改变Html元素样式属性 行内样式操作案例如下: <!DOCTYPE html> <html><head><meta charset ...

  3. JavaScript文档对象模型document对象改变Html表单属性(4)

    1.document对象改变Html表单属性 更改Html元素内容时候可以用innerHtml属性进行修改,但是表单元素只能用value属性修改元素内容 案例如下: <!DOCTYPE html ...

  4. JavaScript文档对象模型document对象改变Html元素内容(3)

    1.document对象改变Html元素内容 (1.)innerText不会自动解析html标签,会将代码前后的空格和换行去掉 innerHTMl会自动解析html标签,保留代码前后的空格和换行 (推 ...

  5. log4j对象改变日志级别

    log4j对象改变日志级别可批量的改变所有级别,或是根据条件改变日志级别. log4j配置文件: log4j.rootLogger=ERROR,FILE,CONSOLE,EXECPTION #log4 ...

  6. Vue2 侦听器监听对象改变4种方式

    ** Vue2 watch监听对象改变4种方式 1.整个对象一起改变可以直接监听到. data() {return {info: { name: "张三" },};}, watch ...

  7. Synchronize对象属性改变

    对象属性改变 使用一个对象进行加锁时 如果,对象本身不发生改变,依然是同步的 对象属性,发生改变,不会影响同步 package com.bjsxt.base.sync006;/*** 同一对象属性的修 ...

  8. (重要)java都是值传递,与对象形参所指向的对象改变,其实参所指向的对象也相应改变并不矛盾(2011年9.30日一天写的两个程序的总结结果)...

    1.0建立二叉树的代码,在java中必须创建二叉树的方法必须用返回值,因为不存在c语言中的引用传递,在java中只有值传递 代码1为正确,代码2(没有使用返回值)为错误.那么为什么之前的例子中将对象作 ...

  9. java中形参不可以是对象吗_(重要)java都是值传递,与对象形参所指向的对象改变,其实参所指向的对象也相应改变并不矛盾(2011年9.30日一天写的两个程序的总结结果)...

    1.0建立二叉树的代码,在java中必须创建二叉树的方法必须用返回值,因为不存在c语言中的引用传递,在java中只有值传递 代码1为正确,代码2(没有使用返回值)为错误.那么为什么之前的例子中将对象作 ...

最新文章

  1. easyexcel生成excel_阿里JAVA解析Excel工具easyexcel
  2. python经典小游戏-python零基础入门的小游戏。
  3. 数据库 —— 应用程序与数据库的连接
  4. 保存delphi中的library path
  5. 【STM32】GPIO功能复用
  6. neo4j 查询同一节点的两个上级_WhatRoute for Mac(互联网流量诊断查询工具)
  7. 如何安装Favicon
  8. 知识点2-1:设置开发环境
  9. python语言控制结构是指_python程序的三种控制结构
  10. 【KMP】KMP 字符串匹配算法
  11. Java多线程概念[同步容器,并发容器](二)
  12. LeetCode 1035 不相交的线
  13. 【DIY贴片机】基于opencv识别定位电子元件
  14. mysql字段描述_详细的MySQL字段类型描述
  15. R学习笔记:《R语言入门与数据分析》
  16. Python爬取王者荣耀所有英雄以及高清大图
  17. 神经网络知识梳理——从神经元到深度学习
  18. 陈吉平-阿里巴巴离职DBA在35岁总结的职业生涯
  19. JAVASE阶段测试试卷
  20. 基于php的酒店管理系统文献综述,酒店管理系统文献综述酒店管理系统文献综述.ppt...

热门文章

  1. 【angular5项目积累总结】列表多选样式框(1)
  2. app微信支付的集成步骤
  3. Aasp.net前台调用后台cs变量
  4. Anaconda闪退问题
  5. Secure CRT 自动记录日志和时间戳功能配置
  6. Qt 的QString类的使用
  7. 百度超级链XChain(12)平行链与群组
  8. (chap3 数据链路) 介质型网络
  9. 134. 加油站(贪心算法)
  10. 【Flask项目】项目准备之-创建项目的APP对象