失败和成功之间距离只有1M

What you think decides everything

导航

2008年10月7日

摘要: Java 异步消息处理在前一节实现异步调用的基础上,现在我们来看一下一个完善的Java异步消息处理机制. [写在本节之前] 在所有这些地方,我始终没有提到设计模式这个词,而事实上,多线程编程几乎每一步都在应该设计模式.你只要能恰如其份地应用它,为什么要在意你用了某某名称的模式呢? 一个说书人它可以把武功招数说得天花乱坠,引得一班听书客掌声如雷,但他只是说书的.真正的武林高手也许并不知道自己的招式在... 阅读全文

posted @ 2008-10-07 16:04 frank.net 阅读(334) 评论(0) 推荐(0) 编辑

摘要: java实现异步调用在JAVA平台,实现异步调用的角色有如下三个角色:调用者取货凭证真实数据一个调用者在调用耗时操作,不能立即返回数据时,先返回一个取货凭证.然后在过一断时间后凭取货凭证来获取真正的数据.所以连结调用者和真实数据之间的桥梁是取货凭证.我们先来看它的实现:publicclassFutureTicket{privateObjectdata=null;privatebooleancomp... 阅读全文

posted @ 2008-10-07 16:03 frank.net 阅读(276) 评论(0) 推荐(0) 编辑

摘要: volatile 变量volatile 是用来保证[内存同步]的关键字,内存同步是说在某个线程中修改某实例字段能够及时地更新到主存储区,而某线程如果需要引用该字段也能及时地从主存储区中得到最新的数据.简单说它是当前线程的工作存储区和主存储区对某字段的及时同步,所以我们说它是[内存同步],但它不是线程同步.也就是说,一个线程对 volatile字段进行更新时,它只会把更新后的值及时地同步到主存储区,... 阅读全文

posted @ 2008-10-07 16:03 frank.net 阅读(328) 评论(0) 推荐(0) 编辑

摘要: 实战篇秘籍 (一) 本来这几节的内容想拿出来单独放在秘籍篇中.但由于我在实战篇五的结尾处说:关于这个例子仍然还有很多可说的内容,所以经由这句话所引出的秘籍篇,作为实战篇的继续,就叫它实战秘籍.在实战篇五中,有两个非常关键的重点需要在本节介绍的,之所以称之为秘籍,不客气地说就是很多高手根本没了解的(不是不理解,是压根就不知道)甚至一些在全球小有名气的大牛都是不很清楚.当然,还是有不少人是非常清楚的,... 阅读全文

posted @ 2008-10-07 16:02 frank.net 阅读(278) 评论(0) 推荐(0) 编辑

摘要: 中断线程有了上一节[线程的中断],我们就好进行如何[中断线程]了.这绝对不是玩一个文字游戏.是因为"线程的中断"并不能保证"中断线程",所以我要特别地分为两节来说明.这里说的"中断线程"意思是"停止线程",而为什么不用"停止线程"这个说法呢?因为线程有一个明确的stop方法,但它是反对使用的,所以请大家记住,在java中以后不要提停止线程这个说法,忘记它!但是,作为介绍线程知识的我,我仍然要告诉你... 阅读全文

posted @ 2008-10-07 16:02 frank.net 阅读(319) 评论(0) 推荐(0) 编辑

摘要: [线程的中断]不客气地说,至少有一半人认为,线程的"中断"就是让线程停止.如果你也这么认为,那你对多线程编程还没有入门.在java中,线程的中断(interrupt)只是改变了线程的中断状态,至于这个中断状态改变后带来的结果,那是无法确定的,有时它更是让停止中的线程继续执行的唯一手段.不但不是让线程停止运行,反而是继续执行线程的手段.对于执行一般逻辑的线程,如果调用调用它的interrupt()方... 阅读全文

posted @ 2008-10-07 16:01 frank.net 阅读(284) 评论(0) 推荐(0) 编辑

摘要: [深入了解线程对象与线程,线程与运行环境] 在基础篇中的第一节,我就强调过,要了解多线程编程,首要的两个概念就是线程对象 和线程. 现在我们来深入理解线程对象,线程,运行环境之间的关系,弄清Runnable与Thread的 作用. 在JAVA平台中,序列化机制是一个非常重要的机制,如果不能理解并熟练应用 序列化机制,你就不能称得一个java程序员. 在JAVA平台中,为什... 阅读全文

posted @ 2008-10-07 16:00 frank.net 阅读(196) 评论(0) 推荐(0) 编辑

摘要: 实战篇(二) 本节继续上一节的讨论. [一个线程在进入对象的休息室(调用该对象的wait()方法)后会释放对该对象的锁],基于这个原因. 在同步中,除非必要,否则你不应用使用Thread.sleep(long l)方法,因为sleep方法并不释放对象的锁. 这是一个极其恶劣的品德,你自己什么事也不干,进入sleep状态,却抓住竞争对象的监视锁不让其它需 要该对象监视锁的线程运行,简单说是极端... 阅读全文

posted @ 2008-10-07 15:59 frank.net 阅读(204) 评论(0) 推荐(0) 编辑

摘要: 实战篇(一) 在进入实战篇以前,我们简单说一下多线程编程的一般原则. [安全性]是多线程编程的首要原则,如果两个以上的线程访问同一对象时,一个线程会损坏 另一个线程的数据,这就是违反了安全性原则,这样的程序是不能进入实际应用的. 安全性的保证可以通过设计安全的类和程序员的手工控制.如果多个线程对同一对象访问不 会危及安全性,这样的类就是线程安全的类,在JAVA中比如String类就被设计... 阅读全文

posted @ 2008-10-07 15:59 frank.net 阅读(280) 评论(0) 推荐(0) 编辑

摘要: 基础篇(四) wait(),notify()/notityAll()方法 关于这两个方法,有很多的内容需要说明.在下面的说明中可能会有很多地方不能一下子 明白,但在看完本节后,即使不能完全明白,你也一定要回过头来记住下面的两句话: 1、wait(),notify()/notityAll()方法是普通对象的方法(Object超类中实现),而不是线程对象的方法 2、wait(... 阅读全文

posted @ 2008-10-07 15:58 frank.net 阅读(187) 评论(0) 推荐(0) 编辑

摘要: 线程对象的几个重要的方法 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节的篇幅来把线程方法中一些重要的知识说完,但这样下来估计要很常的篇幅,可能要用好几节才能说把和线程方法相关的一些重要的知识说完. 首先我们接基础篇(二)来说明: start()方法 一个线程对象生成后,如果要产生一个执行的线程,就一定要调用它的star... 阅读全文

posted @ 2008-10-07 15:57 frank.net 阅读(166) 评论(0) 推荐(0) 编辑

摘要: 在进入java平台的线程对象之前,基于基础知识(一)的一些问题,我先插入两个基本概念. [线程的并发与并行] 在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式 (大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式 就叫并发(concurrent). 而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时... 阅读全文

posted @ 2008-10-07 15:56 frank.net 阅读(244) 评论(0) 推荐(0) 编辑

摘要: 如同程序和进程的区别,要掌握多线程编程,第一要弄清的问题是:线程对象和线程的区别. 线程对象是可以产生线程的对象.比如在java平台中Thread对象,Runnable对象. 线程,是指正在执行的一个指令序列.在java平台上是指从一个线程对象的start()开始. 运行run方法体中的那一段相对独立的过程. 鉴于作者的水平,无法用更确切的词汇来描述它们的定义.... 阅读全文

posted @ 2008-10-07 15:55 frank.net 阅读(201) 评论(0) 推荐(0) 编辑

摘要: 一:理解多线程 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。 多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只... 阅读全文

posted @ 2008-10-07 15:53 frank.net 阅读(311) 评论(0) 推荐(0) 编辑