`
- 浏览:
16558321 次
- 性别:
- 来自:
济南
-
不管我是多么喜欢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技术。
由于时间关系,今天就谈到这里,希望能抛砖引玉!!请大家多多指教!
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
内含 chapter02-chapter18 共 17 个实例性源码项目,...如果你还徘徊在 java 线程编程的大门之外,如果你面试时还是谈线程犹如谈虎而色变,那本资源就是为你而写!相信你理解了此源码之后,即可步入 Java 多线程开发。
参加工作以来,我编写并维护了若干C++/Java多线程网络服务程序,这本书总结了我在开发维护这类服务程序方面的经验。工作中,我没有写过单线程的网络服务程序,没有写过C语言的网络服务程序,也没有写过运行在Windows...
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...
- **多线程编程**:探讨多线程编程的挑战和技巧,如线程安全、同步机制等。 #### 1.10 线程同步模型 - **同步机制**:介绍常见的线程同步机制(如锁、信号量等),并讨论它们的适用场景。 - **死锁问题**:分析...
多线程编程是并发编程的基础,第4章介绍了多线程技术的好处,并详细阐述了如何启动和终止线程、线程的各种状态以及线程间通信的基本方式和等待/通知经典范式。这些内容对于理解并发编程的动态特性至关重要。 锁是...
《超线程多核心下Java多线程编程技术分析》聚焦于Java语言的多线程特性。Java提供了一套丰富的线程API,包括Thread类和Runnable接口,使得在Java中实现多线程变得简单。文档将深入讨论synchronized关键字、wait()和...
Java 内存模型(JMM)是多线程编程中的重要概念,它定义了线程如何访问和修改共享变量的规则。JMM 防止了数据的不一致性,通过内存屏障和重排序规则确保了线程间的正确通信。其中,volatile 关键字是 JMM 提供的一种...
`client`版本通常适用于内存有限的桌面环境,而`server`版本则针对服务器环境,优化了多线程和大内存应用的性能。 理解这些基础知识对于Java程序员来说至关重要,它们不仅能够帮助我们编写更高效的代码,还能让我们...
在软件开发中,Java有着丰富的类库支持,如Java Development Kit(JDK)提供了大量的标准类库,涵盖了I/O、网络通信、多线程、数据库连接等方面。此外,开源社区为Java提供了无数的第三方框架和库,如Spring用于企业...
安卓开发经验谈涉及的IT知识点主要集中在安卓应用开发的各个方面,从基础的SQLite数据库操作到复杂的跨进程通信实现,再到Android内存管理以及Android工程师的职场指导,内容十分丰富,对安卓开发者具有很好的指导...
下面,我们将结合标题“谈一谈网络编程学习经验”以及描述中的数字串(可能是随机输入或者错误),探讨网络编程学习的一些关键知识点。 首先,基础理论是学习网络编程的基石。你需要理解网络的基本概念,如OSI七层...
### Java之浅谈深说——教你如何成长为Java编程高手 在IT行业中,Java作为一种广泛使用的编程语言,其重要性不言而喻。对于希望成为Java编程高手的学习者来说,掌握正确的学习路径至关重要。本文将根据提供的标题、...
Java语言是一种现代化的编程语言工具,具有易于学习、执行方式效率高、跨平台性、可移植性、安全性高、多线程设计等优点,更加适合Internet程序开发。Java语言课程是技校计算机网络专业的一门重要课程,但由于教学...
从基础知识的类、对象、封装、继承和多态,到异常处理、集合框架、IO流、多线程和网络编程,它覆盖了Java语言的主要组成部分。这些知识点是每位求职者都需要掌握的,因为它们构成了考察求职者是否具备编程基本素养的...
"Java大公司面试题"通常涵盖了从基础语法到高级特性的全面测试,包括但不限于面向对象编程、集合框架、多线程、异常处理、JVM内存模型、网络编程以及设计模式等。 首先,面试者需要对Java的基础语法有深入理解,如...
Java程序设计是一门涵盖广泛且基础扎实的编程学科,它为初学者提供了进入软件开发世界的通道,也为经验丰富的程序员提供了更多的工具和框架选择。在线开放课程作为一种灵活的学习方式,正日益受到全球学习者的欢迎。...
完全站在没有编程经验读者的角度,手把手教会读者学习Java 配16小时多媒体教学视频,高效、直观 一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、...