`
isiqi
  • 浏览: 16466987 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Java多线程编程经验谈

阅读更多
不管我是多么喜欢JAVA但是,从实际开发角度讲,Java的多线程确实没有C++好使。

表现在:
1.Java没有全局变量;
2.Java 的线程之间的通信比较差,C++提供了多种通信方式;
3.Java的数据同步是通过synchronized来实现,但是基本上等于交给了虚拟机来完成,而C++有很多种:临界区、互斥体等。
4. Java的多线程run方法没有返回值,因此如何能得到子线程的反馈信息,确实令人头疼。
5.Java的多线程是协作式,这样等于操作系统放弃了对线程的控制;

这里谈谈我在java多线程中的编写经验:

1.创建thread时,将主控类或者叫做调用类传入构造函数中,例如:Class A调用Class B,Class A作为Class B构造函数的参数。这样再创建一个子线程时,用同样的方式实现,这样主控类的实例变量就可以作为全局变量,当然要注意同步。

2. 类同步中wait(),notify()一定要考虑好逻辑,不然有可能造成阻塞。

3. 如果多个线程调用或者目前不是很清楚有多少个线程进行通信,最好的办法是自己实现一个listener,然后调用类调用Listener的一个实例方法进行通信。

工作原理:

1) Listener接口提供同步方法 例如SynData();
2) 同步线程提供添加和删除Listener的方法,同时在线程中对注册Listener的类进行轮流通知;
3) 使用给同步数据的线程类,继承Listener接口,实现其方法,将本线程即将结束的数据发送到同步线程中;

其实这个原理来自于Java Swing技术。

由于时间关系,今天就谈到这里,希望能抛砖引玉!!请大家多多指教!
分享到:
评论

相关推荐

    Java 多线程编程入门到精通源代码.zip

    内含 chapter02-chapter18 共 17 个实例性源码项目,...如果你还徘徊在 java 线程编程的大门之外,如果你面试时还是谈线程犹如谈虎而色变,那本资源就是为你而写!相信你理解了此源码之后,即可步入 Java 多线程开发。

    linux多线程服务端编程使用muduoc网络库(epub格式,体积更小,阅读体验更好)

    参加工作以来,我编写并维护了若干C++/Java多线程网络服务程序,这本书总结了我在开发维护这类服务程序方面的经验。工作中,我没有写过单线程的网络服务程序,没有写过C语言的网络服务程序,也没有写过运行在Windows...

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

    java 并发编程的艺术

    多线程编程是并发编程的基础,第4章介绍了多线程技术的好处,并详细阐述了如何启动和终止线程、线程的各种状态以及线程间通信的基本方式和等待/通知经典范式。这些内容对于理解并发编程的动态特性至关重要。 锁是...

    线程详解-打包(3 合1)下载

    《超线程多核心下Java多线程编程技术分析》聚焦于Java语言的多线程特性。Java提供了一套丰富的线程API,包括Thread类和Runnable接口,使得在Java中实现多线程变得简单。文档将深入讨论synchronized关键字、wait()和...

    来吧!再谈多线程(详细).doc

    Java 内存模型(JMM)是多线程编程中的重要概念,它定义了线程如何访问和修改共享变量的规则。JMM 防止了数据的不一致性,通过内存屏障和重排序规则确保了线程间的正确通信。其中,volatile 关键字是 JMM 提供的一种...

    侯捷畅谈源码追踪经验谈

    侯捷在书中详细阐述了如何运用这些基础知识去解析源码,特别是Java语言的特性,如多线程、反射、动态代理等,如何在实际项目中体现并影响代码行为。 其次,掌握有效的调试技巧是源码追踪的关键。侯捷介绍了使用IDE...

    java杂谈-一个计算机专业学生几年的编程经验汇总谈.pdf

    `client`版本通常适用于内存有限的桌面环境,而`server`版本则针对服务器环境,优化了多线程和大内存应用的性能。 理解这些基础知识对于Java程序员来说至关重要,它们不仅能够帮助我们编写更高效的代码,还能让我们...

    浅谈计算机软件开发的JAVA编程语言.zip

    在软件开发中,Java有着丰富的类库支持,如Java Development Kit(JDK)提供了大量的标准类库,涵盖了I/O、网络通信、多线程、数据库连接等方面。此外,开源社区为Java提供了无数的第三方框架和库,如Spring用于企业...

    安卓开发经验谈

    安卓开发经验谈涉及的IT知识点主要集中在安卓应用开发的各个方面,从基础的SQLite数据库操作到复杂的跨进程通信实现,再到Android内存管理以及Android工程师的职场指导,内容十分丰富,对安卓开发者具有很好的指导...

    谈一谈网络编程学习经验.rar_网络学习的经验

    下面,我们将结合标题“谈一谈网络编程学习经验”以及描述中的数字串(可能是随机输入或者错误),探讨网络编程学习的一些关键知识点。 首先,基础理论是学习网络编程的基石。你需要理解网络的基本概念,如OSI七层...

    java之浅谈深说--教你如何成长

    ### Java之浅谈深说——教你如何成长为Java编程高手 在IT行业中,Java作为一种广泛使用的编程语言,其重要性不言而喻。对于希望成为Java编程高手的学习者来说,掌握正确的学习路径至关重要。本文将根据提供的标题、...

    浅谈java语言在技校教学中的实践与探索.pdf

    Java语言是一种现代化的编程语言工具,具有易于学习、执行方式效率高、跨平台性、可移植性、安全性高、多线程设计等优点,更加适合Internet程序开发。Java语言课程是技校计算机网络专业的一门重要课程,但由于教学...

    java大公司面试题

    "Java大公司面试题"通常涵盖了从基础语法到高级特性的全面测试,包括但不限于面向对象编程、集合框架、多线程、异常处理、JVM内存模型、网络编程以及设计模式等。 首先,面试者需要对Java的基础语法有深入理解,如...

    浅谈Java程序设计在线开放课程.zip

    Java程序设计是一门涵盖广泛且基础扎实的编程学科,它为初学者提供了进入软件开发世界的通道,也为经验丰富的程序员提供了更多的工具和框架选择。在线开放课程作为一种灵活的学习方式,正日益受到全球学习者的欢迎。...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    完全站在没有编程经验读者的角度,手把手教会读者学习Java 配16小时多媒体教学视频,高效、直观 一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、...

Global site tag (gtag.js) - Google Analytics