`
hbkh2000
  • 浏览: 203668 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

synchronized关键字用于保护共享数据

阅读更多

1、synchronized关键字用于保护共享数据;

public class ThreadTest implements Runnable
{   
    public synchronized void run()
    {
        for (int i = 0; i < 10; i++)
        {
            System.out.print(" " + i);
        }
    }
   
    public static void main(String[] args)
    {
        Runnable r1 = new ThreadTest();
        Runnable r2 = new ThreadTest();
        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);
        t1.start();
        t2.start();
    }
}
结果: 0 0 1 2 3 4 1 5 2 6 3 7 4 8 9 5 6 7 8 9 ;(不同对象)

   这个程序中的t1,t2是两个对象(r1,r2)的线程。JAVA是面向对象的程序设计语言,不同的对象的数据是不同的,r1,r2有各自的run()方法,而synchronized使同一个对象的多个线程,在某个时刻只有其中的一个线程可以访问这个对象的synchronized数据。
   每个对象都有一个“锁标志”,当这个对象的一个线程访问这个对象的某个synchronized数据时,这个对象的所有被synchronized修饰的数据将被上锁(因为“锁标志”被当前线程拿走了),只有当前线程访问完它要访问的synchronized数据时,当前线程才会释放“锁标志”,这样同一个对象的其它线程才有机会访问synchronized数据。

------
wait(),notify(),notifyAll()
首先说明:wait(),notify(),notifyAll()这些方法由java.lang.Object类提供,而上面讲到的方法都是由java.lang.Thread类提供(Thread类实现了Runnable接口)。
wait(),notify(),notifyAll()这三个方法用于协调多个线程对共享数据的存取,所以必须在synchronized语句块内使用这三个方法。

分享到:
评论

相关推荐

    java同步synchronized关键字用法示例

    Java中的`synchronized`关键字是多线程编程中的一个重要概念,用于控制并发访问共享资源时的同步机制。在Java中,当多个线程试图同时访问和修改同一块代码或数据时,可能会导致数据不一致的问题。为了解决这个问题,...

    synchronized关键字的用法详解

    通过`synchronized`关键字,开发人员可以在多线程环境中有效地控制对共享资源的访问,避免出现数据不一致的情况。 #### 二、synchronized的基本用法 `synchronized`关键字有两种主要的使用方式:一种是在方法声明...

    Synchronized关键字的用法

    ### Synchronized关键字在Java中的应用 #### 概述 `synchronized`是Java语言中的一个关键字,主要用于实现线程同步,防止多个线程同时访问共享资源而导致的数据不一致问题。通过`synchronized`关键字,开发者可以...

    synchronized关键字的实质及用法

    《深入理解Java中的synchronized关键字》 在Java编程语言中,`synchronized`关键字是用于实现线程同步的重要工具,它的本质在于确保多线程环境下的数据一致性与安全性。通过`synchronized`,我们可以控制对共享资源...

    java基本教程之synchronized关键字java多

    一、synchronized关键字的作用与原理 `synchronized`关键字主要有两个作用:同步方法和同步块。它通过锁机制来实现线程同步,防止多个线程同时执行同一段代码,可能导致的数据不一致问题。 1. 同步方法:当在方法...

    深入理解java中的synchronized关键字

    Java中的`synchronized`关键字是用于实现线程同步的关键机制,它的主要目的是确保在多线程环境中,对共享资源的访问能够保持数据的一致性和完整性。本文将深入探讨`synchronized`的两种主要用法:synchronized方法和...

    Java并发-Synchronized关键字.docx

    本文将探讨Synchronized关键字在解决并发控制中的作用及其使用方式。 首先,让我们回顾一下问题的背景:在给出的示例代码中,创建了10个线程,每个线程都对共享变量`count`进行10000000次的累加操作。理论上,最终...

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

    3. **synchronized 静态方法**:`synchronized`关键字可以用于静态方法,这将使得所有类的实例共享同一把锁,确保任何时候只有一个线程执行该静态方法。 4. **synchronized 类(类锁)**:可以使用 `synchronized` ...

    举例讲解Java中synchronized关键字的用法

    在Java编程语言中,`synchronized`关键字是一个非常重要的概念,它主要用于多线程环境中的线程同步,确保共享资源的正确访问,防止数据不一致性。以下是对`synchronized`关键字使用方法的详细讲解: 1. **修饰实例...

    并发编程原理学习:synchronized关键字.doc

    `synchronized`关键字可以用于修饰方法或作为同步代码块,其核心目标是保证线程对共享资源的访问具有互斥性和可见性,防止数据不一致和竞态条件。 ### 同步代码块 同步代码块的形式如下: ```java synchronized ...

    java中synchronized用法

    Synchronized 是 Java 语言中用于解决多线程共享数据同步问题的关键字。它可以作为函数的修饰符,也可以作为函数内的语句,用于实现同步方法和同步语句块。在 Java 中,synchronized 关键字可以作用于 instance 变量...

    深入讲解java线程与synchronized关键字

    理解并熟练运用synchronized关键字对于编写并发安全的Java代码至关重要,它可以有效地解决多线程环境下的数据同步问题,避免竞态条件和数据不一致。在实际编程中,应结合使用其他并发工具类(如Semaphore、Lock等)...

    关于多线程常用方法以及对锁的控制(详解)

    Synchronized关键字用于保护共享数据,当然前提是要分清哪些数据是共享数据。每个对象都有一个锁标志,当一个线程访问该对象时,被Synchronized修饰的数据将被“上锁”,阻止其他线程访问。当前线程访问完这部分数据...

    详解java中的synchronized关键字

    总之,`synchronized`关键字是Java中实现线程安全的关键手段之一,它通过锁机制保护共享资源,防止数据不一致和竞态条件。然而,在实际应用中,需要根据具体需求来权衡其性能和功能,有时可能需要结合使用其他并发...

    java多线程编程之Synchronized关键字详解

    这种全局的同步可能会降低程序的并发性能,尤其是在没有共享数据的情况下。因此,为了提高效率,开发者应尽可能缩小锁的范围,只锁定真正需要同步的部分。 总结来说,`Synchronized`关键字在Java多线程编程中起到...

    Java中使用synchronized关键字实现简单同步操作示例

    Java中的`synchronized`关键字是用于实现线程同步的关键工具,其目的是确保在多线程环境中,同一时刻只有一个线程能够执行特定的代码块或方法,从而避免数据竞争和并发问题。下面将详细介绍`synchronized`关键字的三...

    Java 多线程synchronized关键字详解(六)

    Java中的`synchronized`关键字是多线程编程中的一个重要概念,用于控制并发访问共享资源,以避免数据不一致和竞态条件。在这个问题中,我们将深入理解`synchronized`的关键字用法,包括同步方法和同步块。 1. **...

    Java中synchronized关键字修饰方法同步的用法详解

    在Java多线程编程中,synchronized关键字是一个重要的同步工具,它能确保共享资源在多线程环境下的安全访问。synchronized可以用来同步静态和非静态方法,从而实现线程间的互斥访问。以下是关于synchronized修饰方法...

    Java多线程并发编程 Synchronized关键字

    Java中的`synchronized`关键字是多线程编程中用于实现线程同步的重要机制,它确保了在多线程环境下对共享资源的访问具有互斥性和可见性。这些特性使得`synchronized`成为解决并发问题的关键工具。 1. **同步锁机制*...

Global site tag (gtag.js) - Google Analytics