摘要: 笔记摘要: 多个线程之间共享数据,按照每个线程执行代码是否相同,我们可以采取不同的处理方式,这里通过简单的卖票示例说明了当每个线程执行相同代码的情况, 对于多个线程执行不同代码的情况,处理方式比较灵活,这里主要介绍了2种方式,通过2种方式的对比和归纳,我们可以总结出在多个线程执行不同的代码 情况下,如何进行代码的设计。一:如果每个线程执行的代码相同 可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如:卖票系统。简单的卖票系统示例:class Ticket implements Runnable{ private int tic... 阅读全文
posted @ 2012-12-05 13:08 积小流,成江海 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 笔记摘要: 所谓线程范围内共享数据,即对于相同的程序代码,多个模块在同一个线程中运行时要共享一份数据,而在另外线程中运行时又共享另外一份数据, API中为我们提供了一个操作线程范围内共享数据的类ThreadLocal,对于线程范围内共享数据的应用,在ThreadLocal的应用场景中进行了介绍,然后 主要对它的使用进行讲解,演示了由单一数据的共享到将多个数据封装到一个对象中,然后进行共享。在开始先用一个Map集合简单实现线程范围内数据的共享一、使用Map实现线程范围内数据的共享原理: 将线程对象作为map的键存入,这样就保证了map对象的唯一,也就保证了线程内数... 阅读全文
posted @ 2012-12-05 01:21 积小流,成江海 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 笔记摘要: 这里分析了多线程的一些细节问题,并介绍了传统定时器的创建,同时实现了根据自己的调度计划的自定义定时器,对于传统互斥技术中发现的内部类问题, 进行了分析,最后对于同步通信技术,是重点,分析了如何处理类似的问题,如何设计能够更加清晰简单,体现了高内聚和程序的健壮性一、多线程的几个知识点1、为何使用实现Runnable的方式创建线程更普遍? new Runnable()的方式,更加体现面向对象的思想: 通过 new Thread()创建一个线程,代码封装在runnable对象中,代码和线程独立分开来,但最终将它们组合在一起。 Thread threa... 阅读全文
posted @ 2012-12-05 00:04 积小流,成江海 阅读(302) 评论(0) 推荐(0) 编辑