`
lianxf
  • 浏览: 880 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

synchronized的几种用法

阅读更多
    1.方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之前.这时,线程获得的是成员锁,即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线程才能进入.
  2.对某一代码块使用,synchronized后跟括号,括号里是变量,这样,一次只有一个线程进入该代码块.此时,线程获得的是成员锁
3.synchronized后面括号里是一对象,此时,线程获得的是对象锁. 对于3,如果线程进入,则得到当前对象锁,那么别的线程在该类所有对象上的任何操作都不能进行.在对象级使用锁通常是一种比较粗糙的方法。为什么要将整个对象都上锁,而不允许其他线程短暂地使用对象中其他同步方法来访问共享资源?如果一个对象拥有多个资源,就不需要只为了让一个线程使用其中一部分资源,就将所有线程都锁在外面。
class meth{
   Object o= new Object(), y = new Object();

   public void foo() {
      synchronized(o) {     
     }

      synchronized(y) {
      }
   }

   public void () {
      synchronized(this) {
      }
   }
  }

4、synchronized后面括号里是类,此时,线程获得的是对象锁.这样的同步块而言,所有调用Test多个实例的线程赐教只能有一个线程可以执行.
分享到:
评论

相关推荐

    synchronized的几种示例

    本文将深入探讨`synchronized`的几种使用示例,包括方法加锁、代码块加锁(针对`this`和对象)以及静态方法加锁。 1. **方法加锁** 当在实例方法前使用`synchronized`关键字时,它会锁定当前对象的监视器,只有...

    java synchronized 学习

    Synchronized 的使用方法有四种: 1. synchronized 修饰普通方法 2. synchronized 修饰普通代码块 3. synchronized 修饰静态方法 4. synchronized 修饰静态方法中的代码块 在使用 synchronized 同步锁时,需要注意...

    synchronized 的理解

    下面,我们将从`synchronized`的基本概念、使用方式以及与`wait`和`notify`方法的关系几个方面进行详细阐述。 ### 一、`synchronized`关键字的基本概念 `synchronized`是Java语言中提供的关键字,用于控制线程的...

    生产者消费者Java—synchronized 机制

    这些方法必须在`synchronized`代码块或方法中调用,因为它们依赖于监视器(即对象的锁)来工作。 2. **BlockingQueue(阻塞队列)**:在实际的生产者消费者实现中,通常会使用`java.util.concurrent`包下的`...

    Visual Speech Recognition with Loosely Synchronized Feature Streams

    - **比较对象**:与几种基线系统进行了对比,以证明所提方法的有效性。 #### 结论与展望 本文提出的方法通过结合判别式检测技术和多流动态贝叶斯网络,有效解决了视觉语音识别中的松散同步问题。未来的研究方向...

    OC-@synchronized

    在Objective-C(简称OC)中,`@...总之,`@synchronized` 是OC中实现线程安全的一种基础工具,但它需要谨慎使用,以平衡并发性能和代码的复杂性。在设计多线程程序时,开发者应根据具体需求选择最适合的同步策略。

    java高并发写入用户信息到数据库的几种方法

    Java 高并发写入用户信息到数据库的几种方法 在 Java 高并发环境下,写入用户信息到数据库可能会出现一些问题,例如多个用户同时写入导致数据不一致或重复写入。为了解决这些问题,需要使用一些特殊的方法来确保...

    JAVA单例模式的几种实现方法

    ### JAVA单例模式的几种实现方法 #### 一、饿汉式单例模式 饿汉式单例模式是在类初始化时就已经完成了实例化的操作。这种模式下,类一旦被加载,就会创建一个单例对象。 ##### 代码示例: ```java class ...

    Java 多线程与并发(4-26)-关键字- synchronized详解.pdf

    在使用 synchronized 关键字时,需要注意以下几点: * synchronized 关键字只能被一个线程获取,没有获得锁的线程只能等待。 * 每个实例都对应有自己的锁(this),不同实例之间互不影响。 * synchronized 修饰的...

    线程的几种控制方式以及线程间的几种通信方式

    4. **管程(Monitor)**:Java中的`synchronized`关键字和`wait()`, `notify()`, `notifyAll()`方法其实就是一个简单的管程实现,它提供了线程安全的共享数据访问。 5. **事件(Event)**:Java的`java.util....

    Java使用synchronized实现互斥锁功能示例

    除了使用synchronized关键字外,Java中还提供了其他几种实现互斥锁的方法,例如: 1. 使用Lock接口和 Condition接口。 2. 使用ReentrantLock类。 3. 使用Semaphore类。 这些方法都可以实现互斥锁功能,但是在选择...

    【ASP.NET编程知识】实例解析Java中的synchronized关键字与线程安全问题.docx

    `synchronized`可以应用于以下几种形式: 1. **synchronized 代码块**:同步代码块的形式为 `synchronized (object) { ... }`,其中`object`是用于锁定的对象。这种方式的作用范围较小,只对代码块内的内容进行同步...

    Java中synchronized的用法

    它修饰的对象有以下几种:  1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;  2. 修饰一个方法,被修饰的方法称为同步方法,其作用...

    java 多线程的几种实现方法总结

    Java 多线程的几种实现方法总结 Java 多线程是指在同一个程序中可以有多条执行线索同时执行,每个线程上都关联有要执行的代码,即可以有多段程序代码同时运行。为了帮助大家更好地理解和掌握 Java 多线程的知识,...

    JAVA中单例模式的几种实现方式.doc

    本文介绍了Java中单例模式的几种实现方式,包括非线程安全的基本实现、通过`synchronized`关键字实现线程安全、双重检查锁定以及使用静态内部类实现的延迟初始化持有类。每种方式都有其特点和适用场景: - **非线程...

    Spring获取webapplicationcontext,applicationcontext几种方法详解

    Spring 获取 WebApplicationContext、ApplicationContext 几种方法详解 在 Spring 框架中,获取 WebApplicationContext 和 ApplicationContext 对象是非常重要的,因为它们提供了访问 Spring 容器中的 Bean 对象的...

    使用synchronized实现一个Lock代码详解

    使用synchronized实现一个Lock需要注意以下几点: * 使用synchronized关键字来实现加锁 * 使用wait()和notify()方法来实现线程的等待和唤醒 * 判断当前锁是否被占用,以确定是否可以释放锁 * 使用当前线程的ID来...

    几种单例模式demo

    单例模式的实现方式有很多种,下面我们将详细探讨几种常见的单例模式的实现方法: 1. 饿汉式(静态常量): 这种方式在类加载时就完成了初始化,因此是线程安全的。 ```java public class Singleton { private ...

    几种方法编写线程代码

    了解这些创建线程的方法后,还需要注意线程同步和通信的问题,如`synchronized`关键字、`wait()`, `notify()`和`notifyAll()`方法,以及`volatile`关键字等。线程安全的编程对于避免竞态条件和死锁至关重要。 此外...

Global site tag (gtag.js) - Google Analytics