`
reasonsoft
  • 浏览: 48103 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

解读synchronized关键字

    博客分类:
  • java
阅读更多
最近在写多线程程序,网上收集总结了synchronized的用法,结果如下:

1、synchronized关键字的作用域有二种:

1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中任何一个synchronized方法)。这时,不同的对象实例的synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法;.注意:用synchronized 来锁定一个对象的时候,如果这个对象在锁定代码段中被修改了,则这个锁也就消失了。

2)是某个类的范围A:synchronized static aStaticMethod{}防止多个线程同时访问这个类中的synchronized static 方法。它可以对类的所有对象实例起作用。

   是某个类的范围B(静态对象锁技术): private static Object lock=new Object(); //必须是静态的。这样锁的是这个类.或者可以这样synchronized TestThread.class){}.



2、除了方法前用synchronized关键字,synchronized关键字还可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。用法是: synchronized(this){/*区块*/},它的作用域是当前对象;

3、synchronized关键字是不能继承的,也就是说,基类的方法synchronized f(){} 在继承类中并不自动是synchronized f(){},而是变成了f(){}。继承类需要你显式的指定它的某个方法为synchronized方法;

分享到:
评论

相关推荐

    Java synchronized详细解读.docx

    Java中的`synchronized`关键字是多线程编程中用于同步控制的关键元素,它的主要目标是解决并发环境下多个线程对共享资源的访问冲突。在Java中,由于线程共享内存空间,如果没有适当的同步机制,可能会导致数据不一致...

    详细解读java同步之synchronized解析

    以下是对`synchronized`的详细解读: ### 1. synchronized的特性 - **互斥性**:当一个线程进入一个由`synchronized`修饰的方法或代码块时,其他线程无法同时进入同一对象的`synchronized`代码块。这确保了对共享...

    多方面解读Java中的volatile关键字.rar

    下面我们将从多个角度深入解读Java中的`volatile`关键字。 1. **可见性**:`volatile`关键字确保了变量的修改对所有线程是立即可见的。当一个线程修改了`volatile`变量后,其他线程能够立即看到这一变化,而无需...

    Java并发编程学些手册

    Java并发编程学些手册,包括并发编程基础、volatile关键字、synchronized关键字、final关键字、对象的共享、同步工具类、线程池、锁、多线程实战等部分的详细介绍和解读。 无论你是面试,还是进阶,这些文章的内容...

    黑马武汉校区Java面试宝典

    synchronized关键字是通过monitorenter和monitorexit指令来实现的,monitorenter指令是指获取对象的监控锁,而monitorexit指令是指释放对象的监控锁。 2.7 synchronized和volatile的区别 synchronized关键字是指...

    04 并发编程专题08.zip

    本专题主要聚焦于"同步机制",包括Synchronized关键字、Lock接口以及AbstractQueuedSynchronizer(AQS)。以下是对这些核心概念的详细解读。 **Synchronized关键字** Synchronized是Java中的一个内置关键字,用于实现...

    Java Concurrency in Practice-2006版

    书中详细介绍了在Java环境下实现线程安全的数据结构和对象的方式,以及如何正确使用同步机制,如synchronized关键字和java.util.concurrent包中的各种并发工具。作者团队成员包括了Java语言和并发库的重量级贡献者,...

    java笔记与java核心内容解读

    理解和掌握线程同步、互斥以及并发控制(如synchronized关键字、wait/notify机制)是提升程序性能的关键。 7. **IO流**:Java的IO流系统用于读写数据,包括字符流和字节流。NIO(New IO)提供了一种更高效、非阻塞...

    阿里巴巴2016校园招聘阿里云笔试试题题目(1).pdf

    知识点:线程同步、单例设计模式、Java synchronized关键字。 7. 概率论:该问题要求计算服务器中至少有一块硬盘出故障的概率。解决方案是使用概率论的基本概念,例如独立事件和条件概率。 知识点:概率论、独立...

    java8源码-JavaRobot:Java学习笔记,JavaLearningNote

    synchronized关键字 Java String Java Arrays Java Collections Java 泛型 Java NIO Buffer Channel Selector Java 8 Features 源码解读 String源码系列 List源码系列 ArrayList LinkedList CopyOnWriteArrayList ...

    Android网络业务的封装与调度.pdf

    synchronized关键字用于确保任务在Wi-Fi网络状态下的线程安全,而ReentrantLock提供了更加灵活的锁定机制。锁的应用主要是为了在多线程环境下保证任务执行的顺序性和数据的一致性。 6. **任务执行状态的回调...

    Java线程基础知识

    要编写有效使用线程的Java程序,需要掌握一些核心概念和API,如Thread类、Runnable接口、synchronized关键字、wait()和notify()方法等。但同时也需要注意,多线程环境增加了程序的复杂度,线程间的同步和通信成为了...

    java 面试 百度入职老哥整理 全是干货

    - CAS(Compare-And-Swap)算法和乐观锁、悲观锁的概念,以及ReentrantLock与synchronized关键字的区别。 - 线程的创建方式、线程状态、守护线程与用户线程的差异,以及线程间通信的常用方法(如wait()、notify()...

    java 关键字大全

    本文将深入解读“java关键字大全”,全面覆盖并详述Java中的关键字及其用法,通过实例帮助理解。 #### 1. abstract `abstract`关键字用于声明抽象类或抽象方法。抽象类不能被实例化,它主要用作其他类的基类,为...

    Java面试通关宝典:深度解读核心知识点与实战技巧,全面提升面试表现力与技术实力

    Java提供了线程模型,包括同步机制(如synchronized关键字、 volatile变量、Lock接口)和并发工具类(如Semaphore、CountDownLatch、CyclicBarrier),用于管理多个线程间的协作和同步。理解这些概念并能熟练运用,...

    一些学习资料(EJB,word,excel,java多线程)

    理解线程同步、死锁、活锁、饥饿等概念,以及如何使用synchronized关键字、wait()、notify()、notifyAll()方法以及Lock接口,是掌握Java多线程编程的关键。此外,线程池(ThreadPoolExecutor)的使用也是优化多线程...

    Java面试宝典-附带答案.pdf

    3. synchronized关键字可以修饰方法和代码块,用于控制线程对共享资源的互斥访问。 4. 线程的基本状态包括新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、等待(Waiting)和死亡(Terminated)状态。 5. ...

    2020最全Java面试题以及答案解析.zip

    4. **多线程**:Java提供了丰富的多线程支持,如Thread类、Runnable接口、synchronized关键字、volatile关键字、Lock接口等。面试中会考察并发编程的基本概念、线程安全、死锁和活锁等问题。 5. **JVM内存管理**:...

    head first java清晰版(3)

    此外,还将探讨线程安全的编程实践,如使用synchronized关键字和wait/notify机制。 第二章:集合框架 Java集合框架是处理对象数组的强大工具,包括List、Set和Map接口,以及它们的实现类,如ArrayList、LinkedList...

    05-Java多线程并发编程JUC.pdf

    - synchronized关键字:用于实现同步代码块,确保一次只有一个线程可以执行这段代码。 - volatile关键字:用来确保变量在多个线程中的可见性。 - CAS(Compare-And-Swap):一种无锁的同步机制。 5. 线程池 Java...

Global site tag (gtag.js) - Google Analytics