- 浏览: 311335 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhou363667565:
看到你的这个配置 有个地方有点问题:
< aop:po ...
spring ibatis 事务配置 -
wo17796452:
[b][/b][i][/i][u][/u]引用[*][img] ...
crowd Jira confluence 集成 -
wo17796452:
<input type="button&quo ...
crowd Jira confluence 集成 -
benbear2008:
这些类图呢?
Spring MVC框架类图与顺序图 -
TTLtry:
谢了 最近学习spring时候 却总是登不上官方网站 很多 ...
Spring 2.5.5 api 帮助文档 chm格式 下载
第二步,是实现一个线程池
因为之前看书的时候留了个心眼,看线程池相关的内容的时候特意没去研究JDK的实现
因为学跟做不是一码事,写一个线程池,算是给自己看完并发实践这书的一个练习吧
废话不多说,练习开始
首先,整理一下要实现的功能,或者说要注意的元素
1.实现Executor接口
2.实现一个等待队列(可否配置,优先级等)
3.是否需要预启动线程(可否配置)
4.执行开始前,结束后,需要留接口
5.Runable在任务中的存放形式
6.线程的启动,唤醒
7.线程池的关闭(优雅地结束),需要线程提供中断,线程池提供给使用者的提示,线程池返回取消线程等
8.线程队列(空闲队列?)
9.取空闲线程算法(任务入队时?线程执行一个任务结束时?)
10.将所有需要同步的地方尽量使用非阻塞算法(通过侦察,更新一个原子变量实现)
11.减少线程切换开销(轮询是否有任务,n微秒后再进入等待)
暂时就考虑到这些,剩下的以后再补
总的来说,计划写n个版本(毕竟是第二次动手,写一个庞大的需要细致考虑的东西功力还差远呢,只能从最简单的,最方便的实现开始,然后慢慢加强)
测试先行:
线程池代码:
第一版本的目标很简单,只要能跑,没死锁,就是完胜
可惜结果很让人绝望~
写完了,调了近3个小时,仍然没发现问题,最后加了一堆输出,又加了多个锁,终于勉勉强强跑起来了……
并发的调试真难,debug完全没用,看输出又看不出什么来,只能是一遍一遍地检查代码,写下一个版本前先找点资料,研究下调试方法吧
后来发现错误是一个简单的i++……
发表评论
-
git macos 配置
2011-10-04 12:33 1740git有4种协议方式建git服务器,分别是本地协议、SSH协议 ... -
Java加密技术(十)
2011-05-08 22:31 900在Java 加密技术(九)中,我们使用自签名证书完成了认证。接 ... -
Java加密技术(九)
2011-05-08 22:30 857在Java加密技术(八)中,我们模拟了一个基于RSA非对称加密 ... -
Java加密技术(八)
2011-05-08 22:28 871在构建Java代码实现前,我们需要完成证书的制作。 1.生成k ... -
Java加密技术(七)
2011-05-08 22:26 823ECC ECC-Elliptic Curves Cryptog ... -
Java加密技术(六)
2011-05-08 22:24 811接下来我们介绍DSA数字签名,非对称加密的另一种实现。 DSA ... -
Java加密技术(五)
2011-05-08 22:23 713接下来我们分析DH加 ... -
Java加密技术(四)
2011-05-08 22:21 772接下来我们介绍典型的 ... -
Java加密技术(三)
2011-05-08 22:19 972除了DES,我们还知道有DESede(TripleDES,就 ... -
Java加密技术(二)
2011-05-08 22:18 823接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法 ... -
Java加密技术(一)
2011-05-08 22:16 811加密解密,曾经是我一个毕业设计的重要组件。在工作了多年以后回想 ... -
java并发学习之五:读JSR133笔记(持续更新中)
2011-04-11 07:02 880在写线程池的时候,遇 ... -
java并发学习之四:JSR 133 (Java Memory Model) FAQ【译】
2011-04-11 07:01 859Jsr133地址:http://www ... -
java并发学习之三:非阻塞漫想,关于环岛与地铁
2011-04-11 07:00 860到过北京上地的都会知道,上地城铁往西走有一个很大的上地环岛,旁 ... -
java并发学之二
2011-04-11 06:59 902在看书的时候看到了一个观察死锁的工具TDA(Thread Du ... -
java并发学习之一:CountDownLatch
2011-04-11 06:57 720看了几个月的《Java Concurrency in Prac ... -
CAS
2011-04-03 20:08 1095需求描述1:大家知道J2EE应用程序都可以用类型以下形式进行保 ... -
定制TortoiseSVN安装包
2011-03-26 07:05 1099TortoiseSVN的MSI安装包是使用Windows ... -
编译TortoiseSVN源代码
2011-03-26 07:04 1249装编译器软件 A. 你需要 VS.NET2005 (或 ... -
启动脚本
2011-03-12 15:01 863Shell代码 1、 ...
相关推荐
本书的中文版稀缺性凸显了其价值,它不仅提供了英文原版,还包含了中文翻译的前九章,对于想要学习并发编程的开发者来说,这是一个宝贵的资源。中英对照阅读不仅可以帮助理解专业术语,还能提高英语阅读能力,尤其是...
6. **并发与多线程**:Java的并发模型基于内存模型,包括volatile、synchronized、原子类(Atomic*)等特性,以及线程池的配置和优化。 7. **JVM参数设置**:理解并掌握-Xms, -Xmx, -XX:NewRatio, -XX:...
- **并发编程**:线程池、并发容器、并发工具类的使用。 - **性能调优**:内存管理、垃圾收集器的选择、JVM参数调整。 这135套Java面试题覆盖了以上各个方面的知识点,对于Java开发者来说,熟练掌握这些内容不仅...
- 学习线程池的使用和配置,如ExecutorService。 5. **JAVA反射机制**: - 学习如何在运行时动态获取类信息,创建对象,调用方法。 6. **JAVA注解(Annotation)**: - 了解注解的定义、使用及自定义注解。 7....
3. **并发编程**:由于旅游行业业务的高并发特性,熟悉线程池、锁机制、并发容器(如ConcurrentHashMap)等并发编程技术是非常必要的。 4. **Spring框架**:作为企业级应用的主流框架,Spring的使用是必须的,包括...
ava八股文通常是指Java技术面试中常见的知识点集合,涵盖基础理论、常用框架、进阶技能等内容。以下是概述中可能包含的主要内容: Java基础: 基本语法:数据类型、操作符、控制语句等。 面向对象:封装、继承、多态...
- **改进空间**:反思项目中存在的不足之处及改进方案。 - **三方系统设计**:讨论在设计涉及多方交互的系统时,接口及数据流的设计原则。 #### 十、高级开发与综合题 - **新技能获取**:分享近期学习的新技能或...
这本书的第三版(ava Threads, 3rd Edit.chm)详细介绍了如何在Java应用程序中有效地利用多核处理器,提高程序的性能和响应速度。 在Java中,线程是程序执行的最小单元,它允许一个应用程序同时执行多个任务。通过...
这个Java迷你版迅雷下载器的源码应该包含上述技术的实现,对于学习Java并发编程和网络I/O的开发者来说,这是一个很好的实践案例。通过阅读和分析源码,我们可以深入理解多线程下载的实现细节,以及如何在Java中有效...
3. **并发编程**:手册针对多线程编程给出了指导,如使用并发工具类(如`ConcurrentHashMap`、`BlockingQueue`)而非同步方法,避免过度使用`synchronized`关键字,以及如何正确地使用线程池以提高系统性能。...
以上就是Java线程学习的核心知识点,理解并熟练掌握这些内容,能够帮助开发者编写高效、稳定的多线程程序。在实际开发中,还需要根据具体需求灵活应用,注意避免线程安全问题,确保程序的正确性和性能。
- 协程的并发度取决于可用的CPU核心数量,而非系统级别的线程池。 - 调度策略和并发模型需要根据具体应用场景进行选择和调整。 - 使用Amareya库时,应遵循其文档和最佳实践,确保正确处理协程间的同步和异常。 总的...
6. **线程与并发**:JMUL 提供了一些高级的线程和并发工具,如线程池管理、同步机制,帮助开发者更好地控制多线程环境下的程序执行。 7. **数学计算**:对于需要进行数学运算的场景,JMUL 提供了一些数学函数,包括...
并发编程是Java的强项,面试题可能涵盖线程同步(synchronized、Lock、volatile)、线程池(ExecutorService、ThreadPoolExecutor)、并发容器(ConcurrentHashMap、BlockingQueue)、死锁、活锁与饥饿问题。...
- 使用`ExecutorService`创建线程池可以有效管理并发线程数量,防止过多线程导致资源浪费或系统不稳定。 7. **Android的异步任务和AsyncTask**: - 虽然在Android 3.0之后,AsyncTask不推荐用于长时间运行的任务...