`
virue
  • 浏览: 979 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于synchronized对象锁问题

阅读更多
public class Test implements Runnable{  
   
     public String msg = "show"  
     public synchronized void show() {  
         while (true) {  
             System.out.println(msg);  
         }  
     }  
       
     public void print() {  
         while (true) {  
             System.out.println("print");  
         }  
     }  
       
     public void run() {  
         show();  
     }  
       
     public static void main(String[] args) {  
         Test test = new Test();  
         Thread t = new Thread(test);  
         t.start();  
   
         //test.msg = "other";                 //1  
     }  
 } 

 

 

看似同步的危险代码

 

分享到:
评论
1 楼 repsihWDX 2008-12-06  
?我没看懂。你是指msg这个属性由于public 成为非安全的?

相关推荐

    synchronized枷锁实例

    本文将深入探讨`synchronized`关键字的用法,包括类锁、对象锁、方法锁以及它们之间的关系。 **类锁(Class Lock)** 类锁是通过类的Class对象实现的,当一个线程访问类的静态 synchronized 方法或同步代码块时,就...

    透彻理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别

    Java 中 Synchronized(对象锁)和 Static Synchronized(类锁)的区别 Synchronized 和 Static Synchronized 是 Java 中两种同步机制,它们都用于解决多线程并发访问的安全问题。然而,它们之间存在着本质的区别。...

    java锁机制Synchronizedjava锁机制Synchronized

    Java 锁机制 Synchronized 是 Java 语言中的一种同步机制,用于解决多线程并发访问共享资源时可能出现的一些问题。 Java 锁机制 Synchronized 的概念 在 Java 中,每个对象都可以被看作是一个大房子,其中有多个...

    synchronized锁原理分析(一、从Java对象头看synchronized锁的状态)

    《深入剖析synchronized锁原理——从Java对象头的角度》 synchronized关键字在Java中扮演着重要的角色,它是Java实现同步的基础,确保了多线程环境下的数据一致性。不同于基于JDK实现的Lock接口(如ReentrantLock)...

    Synchronized_锁升级知识点总结

    首先需要知道的是,Synchronized锁在JVM中实现了从低到高的不同锁级别,包括无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态。锁的升级并不是随意进行的,而是根据锁的竞争情况逐步升级的。 偏向锁是一种优化...

    正确使用多线程同步锁@synchronized()1

    在Objective-C中,当你使用`@synchronized`块包围一段代码时,会为指定的对象创建一个互斥锁。如果当前线程已经持有了该锁,那么它可以再次获取并执行内部的代码,而不会造成死锁。这种特性使得在嵌套使用`@...

    java 多线程synchronized互斥锁demo

    2. **同步代码块**:指定一个对象作为监视器,只有获取到该对象锁的线程才能执行代码块: ```java Object lock = new Object(); public void sharedMethod() { synchronized(lock) { // 代码块 } } ``` 在...

    java 偏向锁、轻量级锁及重量级锁synchronized原理.docx

    Java中的`synchronized`关键字是实现线程安全的关键机制,它基于Java对象头的Mark Word进行锁的状态管理。Mark Word是一个动态变化的数据结构,用于存储对象的HashCode、分代年龄、锁状态标志等信息。在32位JVM中,...

    synchronized锁自旋.docx

    首先,`synchronized`锁通常被称为对象锁或重量锁,它基于Java虚拟机(JVM)中的Monitor对象实现。Monitor由对象头中的2个比特位(Tag)标记,当Tag为10时,表示该对象持有重量锁。Monitor地址指向了一个管理线程...

    [并发并行]_[初级]_[C++实现sychronized方式的对象锁]

    这篇初级教程专注于使用C++实现同步机制中的对象锁,这在处理多线程共享资源时非常关键。C++标准库提供了多种工具来支持并发编程,其中包括`synchronized`关键字,尽管它在C++中并不直接存在,但在Java中广泛使用。...

    基于Java synchronized同步锁实现线程交互.pdf

    Java synchronized同步锁可以解决多线程带来的问题,保证同一时刻只有一个线程操作同一资源。使用wait()和notify()方法可以切换线程状态,实现线程交互。因此,在使用Java多线程的场景中,请充分理解Java线程各状态...

    解析Java编程之Synchronized锁住的对象

    由于每个线程都有自己的对象实例,因此多个线程在执行时根本就没有竞争同一个对象锁。 为了解决这个问题,我们可以使用同步块来锁住当前类的Class对象。例如: ```java public class SynchronizedTest2 extends ...

    lock锁,lock锁和synchronized的对比

    一种显式定义同步锁对象来实现锁,提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应先获得Lock锁。 # synchronized锁与lock锁的对比 Lock是显式锁,需要手动的开启和...

    java中synchronized用法

    Synchronized 关键字的作用是取得对象的锁,而不是把一段代码或函数当作锁。每个对象只有一个锁与之相关联。实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。 当 ...

    16.线程的同步机制-synchronized同步方法-多个对象使用多个对象锁.mp4

    在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。

    synchronized 的理解

    `wait()`方法使当前线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用`notify()`或`notifyAll()`方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。 ```java synchronized (lock) { // ...

    java synchronized 学习

    * 若此对象对应的类中包含了多个 synchronized 修饰的方法或代码块,多个线程访问同一个对象的任意 synchronized 修饰的方法或代码块,只要有一个线程拥有了 synchronized 同步锁,其他线程不管想访问 synchronized ...

    Java并发 synchronized锁住的内容解析

    通过使用synchronized关键字,可以锁住当前对象的当前方法,使得其他线程访问该对象的synchronized方法或者代码块阻塞,从而解决了线程安全问题。 在实际开发中,synchronized关键字可以应用于各种场景,例如,在多...

    Synchronized关键字的用法

    1. **同步代码块**:可以通过`synchronized`关键字来声明同步代码块,即通过指定对象锁来实现同步。 ```java synchronized (object) { // 需要同步执行的代码 } ``` - 这种方式中,`object`对象作为锁,任何...

    Java synchronized使用案例

    2. **代码块同步**:锁定特定对象,只有获取到该对象锁的线程才能进入代码块。 ```java synchronized (object) { // 代码块 } ``` 这里的`object`通常是共享资源的实例引用。 二、`synchronized`的作用 1. **线程...

Global site tag (gtag.js) - Google Analytics