`

java中传统的线程通信个人见解

阅读更多


有一个使用共同数据的经验:要用到共同数据(包括同步锁)的若干方法,要放到同一个类里。体现了程序的高内聚,也增强了程序的健壮性。

还有一个经验,把同步代码或在和锁放到共同使用的数据上,而不是放在线程内,这样的好处是什么呢:首先是更符合面向对象的思想。其次是这种设计结构非常容易实现线程的同步,并且增加线程访问共同数据的时候不用每次都在线程内增加同步代码。有利于扩展和维护。

首先看一个例子,子线程先循环10次,主线程再循环100次,接着子线程循环10次,主线程再循环100次,如此循环往复50次;

实现代码如下:

还有一点要注意的地方,就在判断是否等待的地方为什么用到while而不是if:原因是这样的,因为使用wait的时候有可能在没有调用notify的时候自己就唤醒了,开始去执行代码了,这叫做假唤醒。使用while就可以避免伪唤醒带来的灾难,还可以判断一下是否可以去执行代码。

分享到:
评论

相关推荐

    JAVA论文 简易浏览器与JAVA思想

    作者韩公达通过这个项目,深入探讨了JAVA在实际应用中的核心概念,并分享了他的个人见解。 1. **类与对象**: 在JAVA中,类是面向对象编程的基础,它定义了数据结构和行为。在简易浏览器的实现中,可能有Browser类...

    十年总结,一个JAVA人的十年人生路

    通过以上分析,我们不仅看到了JAVA编程领域的专业见解,也窥见了一个资深JAVA人在十年职业生涯中的心路历程。文章强调了编程思维、原理学习、技术与非技术因素并重的重要性,以及在快速变化的软件行业中,个人规划与...

    Java经典入门+笔记

    11. **多线程**:线程的创建方式(继承Thread类、实现Runnable接口),线程同步与通信机制,如synchronized关键字、wait()、notify()和notifyAll()方法。 12. **文件和对象序列化**:如何将对象持久化到硬盘,以及...

    java-study.zip_java_winterh82

    标签"java"和"winterh82"进一步确认了这是Java编程相关的资源,可能包含了Winterh82的个人见解和经验。 压缩包内的文件名称列表包括了一系列的".enc"文件,如"Creston"以及不同编码类型的文件,如"cp936.enc"、"cp...

    java 寝室版(七)

    【标题】:“Java 寝室版(七)”这一主题主要涵盖了Java编程语言在实际工作中的应用和个人经验的理解,特别是关于逻辑思维的培养和运用。Java作为一种广泛应用的面向对象编程语言,其强大之处在于它的跨平台性、...

    张孝祥整理Java就业面试题大全

    同时,良好的问题解答思路也很重要,先阐述基本概念,再讨论其实用性和可能遇到的问题,最后分享个人见解和经验总结。 对于求职者来说,不应过分依赖以往的项目经验,而应注重提升自身的技术功底。即使没有做过特定...

    JAVA程序员之路书

    2. **多线程**:Java的并发模型是高级应用的基础,掌握线程同步、死锁避免、线程池使用等概念至关重要。 3. **异常处理**:Java的异常处理机制是程序健壮性的保障,学会正确使用try-catch-finally结构,理解checked...

    Java 学习笔记极其详细版(包括一些个人色彩不仅仅是纯笔记)

    本学习笔记旨在提供一份全面深入的Java教程,它不仅涵盖了Java的基础知识,还包括了作者个人的见解和实践经验。适合Java初学者、在校大学生以及自学编程爱好者。 #### Java基础知识 1. **数据类型**: - 基本数据...

    java_personal_study_notes.rar_personal

    6. **多线程**:Java内置对多线程的支持,包括Thread类、Runnable接口,以及同步机制(如synchronized关键字、wait()、notify()和notifyAll()方法)。 7. **反射API**:反射允许程序在运行时检查和修改其自身的行为...

    JAVA程序员面试经验.pdf,这是一份不错的文件

    5. **个人态度**:勇于承担责任,对于个人见解和解决方案要有信心,同时保持开放态度,与面试官进行双向沟通。 6. **结束面试**:最后阶段,表现出对公司和职位的热情,提出高质量的问题,礼貌道别。 这些面试知识...

    十年总结,一个JAVA人的十年人生路.docx

    对于JAVA开发来说,作者提到了线程同步与互斥模型、TCP/IP通信协议等基础知识的重要性,即使现代语言已经高度封装,但了解这些底层原理有助于在遇到问题时迅速找到解决方案。 在J2EE学习方面,作者建议首先要深入...

    JAVA基础面试题大全整理版本

    3. **锦上添花部分**:最后,提供一些进阶内容或最佳实践建议,体现个人见解和独特思考。 #### 三、面试题分类 本章节将根据Java基础知识进行分类,并逐一解析关键知识点。 ##### 1. Java语言基础 - **面向对象...

    张孝祥正在整理Java就业面试题大全0719.doc

    在Java面试中,重点考察的知识点涵盖了许多领域,包括但不限于基础语法、数据结构与算法、面向对象编程、JVM内存模型、多线程、集合框架、IO/NIO、网络编程、数据库操作、设计模式以及框架应用等。以下是对部分关键...

    ienchia-learn-java:一个个人项目,制作一个简单的学习教程

    个人项目通常会带有作者的独特见解和实践方法,可能会提供一些非传统或者创新的学习角度。 【标签】"Java" 标签明确了这个项目是关于Java编程语言的。Java是一种广泛使用的面向对象的编程语言,适用于各种平台,如...

    简历自用

    中的"Java开发 四级 一本-2011-07-01.doc"很可能是一个文档,它可能包含了关于Java开发的学习笔记、进阶指南或者是某人的个人学习计划,"四级"可能是指Java学习的四个层次(基础、中级、高级和专业),这通常涵盖...

    MasteringJava:一些旧的Java笔记

    这些笔记可能还包括了作者对书中实例的个人见解,对某些概念的深度解析,以及解决实际问题的技巧和经验分享。通过深入研究这些笔记,你可以巩固对Java的理解,提升编程技能,并能更好地应用于实际项目开发中。无论你...

    java代码-04 蔡起水

    通过对`main.java`的代码分析和`README.txt`的阅读,我们可以深入学习这些Java编程概念,并从中获取蔡起水在编写Java代码时的独特见解和技巧。这不仅有助于提升个人编程技能,也能为团队协作提供良好的参考示例。

    原创谈谈怎么最快学好android(个人看法)

    ### 如何快速学好Android开发:个人见解与实践策略 #### 心态调整与学习路径规划 对于初学者而言,想要高效地学习Android开发,首先需要调整好自己的心态。不应抱有过高的期望值,比如短期内就能找到高薪工作。...

Global site tag (gtag.js) - Google Analytics