`

Java的多线程编程模型3 -- 在1.5之前怎么并发

阅读更多

在java1.5之前,java在并发上面的建树不多,只提供了为数不多的方式来提供提高并发的效率。

其中synchronized关键字是使用最多的,这个看似简单的锁方式,效率奇差,所以那会,java程序员对于c++程序员的在java并发上的诟病总是无力回击。

在1.5之前,java提供的并发容器Vector,我们来看下具体的实现java.util.Vector

从中可以看出,Vector是把所有的方法前面的加上了synchronized关键字

在来看另外的一类静态方法,这类容器可以把List在包装一层,让后就可以作为并发的容器

仔细分析会发现

原来Collections.synchronizedList(List<T> list))这个方法最终会新建一个SynchronizedList<E>,它是继承自SynchronizedCollection<E>,来看SynchronizedList<E>的构造函数,

看看父类的详细的构成

怎样,是不是有一种恍然大悟的感觉,原来在构造函数里面弄了一个 Object mutx = this,让后所有的方法在调用的时候都synchronized(mutex)

相同的方法有

public static <T> Collection<T> synchronizedCollection(Collection<T> c)

public static <T> List<T> synchronizedList(List<T> list)

public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)

public static <T> Set<T> synchronizedSet(Set<T> s)

public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)

public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)

分享到:
评论

相关推荐

    计算机软件-编程源码-1.5 图像浏览器.zip

    这涉及到了并发控制,如线程池或异步编程模型。源码中可能包含对这些技术的应用,以确保程序在处理大量图像时仍保持响应性。 6. 国际化与本地化:对于一个成熟的软件,支持多种语言是很常见的。源码中可能包含国际...

    Java并发编程-并发编程知识点总结.docx

    - **线程安全**:如果一段代码或对象在多线程环境中被多个线程并发访问时,能够保证正确的执行结果,即不会因为线程间的竞争导致数据不一致或程序错误,则这段代码或对象称为线程安全的。 - **`Vector`**:`Vector`...

    Java_并发核心编程-中英文版

    《Java_并发核心编程-中英文版》是一个深入探讨Java并发编程的重要资源,适用于那些希望在JDK 1.5及以后版本的Java环境中提升并发处理能力的开发者。并发编程是现代多核处理器环境下提高软件性能和效率的关键技术,...

    java多线程面试题

    以上知识点涵盖了多线程编程在Java中的基础理论和实际操作,包括线程的创建、运行、异常处理以及线程安全等问题,这些都是在进行Java多线程面试时常见的问题,对于理解和掌握Java多线程编程至关重要。

    java编程基础-01

    Java内置了对多线程的支持,使得开发并发程序变得非常简单。 #### 三、Java历史与发展 Java自1990年代初开始研发以来,经历了多个重要版本的发展。从最初的1.0版本到如今的Java 11及以上版本,每一次更新都带来了...

    最新JAVA技术内存模型

    综上所述,Java内存模型的修订对于提升Java多线程编程的可靠性和效率具有重要意义。正确的使用同步机制,如`synchronized`、`volatile`等,可以有效地解决多线程环境下的数据竞争和可见性问题。演讲者强调了不要尝试...

    JAVA API1.5中文帮助文档

    在并发处理方面,Java 1.5引入了java.util.concurrent包,包含了如ExecutorService、Future和Callable等高级并发工具,极大地提升了多线程编程的效率和易用性。此外,还新增了synchronized锁的改进,如可中断锁...

    Java多线程同步[文].pdf

    文档标题为"Java多线程同步[文].pdf",结合描述中的重复强调的关键词"synchronized",以及部分内容中出现的Java类和方法,我们可以确定文档的核心内容是关于Java中的多线程编程和同步机制。接下来将基于给出的内容...

    并发容器和线程池,java并发编程3

    `CompletableFuture`是一个更加高级的异步编程模型,它结合了`Future`和`Promise`的思想,提供了更强大的功能,如组合多个异步任务、执行链式调用等。 **特点**: - **链式调用**:支持异步任务的链式调用,简化...

    java面试题之多线程[参照].pdf

    在Java编程中,多线程是程序设计中的一个重要概念,特别是在软件开发领域,因为它能有效提升应用程序的效率和响应速度。多线程允许程序同时执行多个任务,改善用户体验,尤其是在处理I/O密集型或计算密集型任务时。...

    Java 内存模型

    深入掌握Java内存模型对于编写高效且正确的Java多线程程序有着不可忽视的作用。程序员需要对内存模型有充分的理解,包括它的原理、规则以及如何在实际编程中应用这些规则,从而编写出能够正确处理并发的高效代码。

    java-concurrent-source:Java多并发编程从入门到精通源码-源码通

    并发运算1.10 Linux和Windows对于并发采取的不同机制第2章认识Java里面的线程2.1先来看一下线程的简单实现三种方法2.2线程里面的属性和方法2.3关于线程的中断机制2.4螺纹的生命周期2.5什么是守护线程2.6线程组2.7...

    java并发笔记

    - `count++`操作涉及到读取、修改和写回三个步骤,在多线程环境中不是原子操作,容易引发数据不一致性。 - `AtomicLong`类提供了线程安全的整数加法操作,避免了竞争条件下的数据不一致性问题。 #### 三、多...

    商业编程-源码-PKY下载系统(pkyDown) v1.5b.zip

    这些功能的实现涉及文件I/O操作、多线程技术、网络编程等。 8. **日志和错误处理**:良好的日志系统和错误处理机制是任何系统不可或缺的部分。源码可能展示了如何记录系统运行信息,以及如何优雅地处理运行时异常。...

    JAVA_API1.5.rar_java1.5 api

    9. **并发工具类(java.util.concurrent)**:Java 5.0引入了并发包,包含如`ExecutorService`, `Future`, `Semaphore`, `CyclicBarrier`, `CountDownLatch`等工具类,提高了多线程编程的效率和可管理性。...

    第1章-Java语言概述-Java面向对象程序设计教程-微课视频版-程杰-清华大学出版社.pptx

    10. **多线程**:Java内置了多线程支持,使得开发者能轻松处理并发任务。 要进行Java开发,首先需要安装Java Development Kit(JDK)。通常,可以从Oracle官方网站下载对应的JDK版本,然后按照安装向导进行安装。...

    Java线程面试题Top50[参照].pdf

    * 在 Java 并发程序缺少同步类的情况下,多线程对成员变量的操作对其它线程是透明的 * volatile 变量可以保证下一个读取操作会在前一个写操作之后发生 十、什么是线程安全? * 线程安全是指在多线程环境下,某个类...

    jdk1.5x64位 windows版.zip

    在并发编程方面,JDK1.5引入了并发工具类(java.util.concurrent),包括Semaphore、CyclicBarrier、CountDownLatch等,这些工具极大地简化了多线程编程中的同步和协调。 在内存模型和并发性能上,JDK1.5引入了Java...

    Java多线程之Executor框架.docx

    总的来说,Java的Executor框架通过引入线程池和任务管理机制,有效地解决了多线程编程中的一些痛点,提高了并发性能,降低了资源消耗,同时提供了更加灵活和强大的线程管理能力。开发人员可以根据具体需求选择不同的...

Global site tag (gtag.js) - Google Analytics