- 浏览: 291473 次
- 性别:
- 来自: 广州
最新评论
-
lliiqiang:
关键在于业务也正确,数据格式只是一种声明协议
XML验证 -
koubi1986:
你好!请教一些问题:请问一下1。你是如何把nutch抓取到的二 ...
Nutch应用 -
juda:
你的希尔排序有问题, for( int i = d; i & ...
排序--插入排序 -
hamlzf:
这个例子很不错
JProfiler学习笔记 -
白色熊猫:
应该下面还有啊 ,看不到啊 麻烦贴出来下 谢谢了
多线程编程 高级主题(二)注:转
文章列表
关于Statement对象:
前面说过,Statement对象是用来绑定要执行的操作的,在它上面有三种执行方法:
即用来执行查询操作的executeQuery(),用来执行更新操作的executeUpdate()和用来执行
动态的未知的操作的execute().
JDBC在编译时并 ...
- 2007-03-06 17:22
- 浏览 1360
- 评论(0)
因为是基础篇,所以还是对每一步骤简单说明一下吧:
前面说是,注册驱动程序有多方法,Class.forName();是一种显式地加载.当一个驱
动程序类被Classloader装载后,在溶解的过程中,DriverManager会注册这个驱动类的实例.
这个调用是自动发生的,也就是说DriverManager.registerDriver()方法被自动调用了,当然
我们也可以直接调用DriverManager.registerDriver()来注册驱动程序,但是,以我的经验.
MS的浏览中APPLET在调用这个方法时不能成功,也就是说MS在浏览器中内置的JVM对该方法的
实现是无效的.
...
- 2007-03-06 17:21
- 浏览 1218
- 评论(0)
JDBC基础(一)
来,我们认识一下!
JDBC,JAVA平台的DATABASE的连通性.白话一句,什么意思啊?
就是JAVA平台上和数据库进行连结的"工具".
还是先一起来回顾一下接口吧:从下向上,接口是对"案例"的抽象,由一个案例抽象出一些规则.
反过来,从上向下,被抽象出来的接口是对案例的一种承诺和约束.
也就是说,只要你实现我规定的接口,你的类就已经具有了接口对外承诺的方法,只要"客户"会
操作接口,不需要重新学习就会操作实现了该接口的新类!
好了,用行话来说:
1.通 ...
- 2007-03-06 17:19
- 浏览 1211
- 评论(0)
Java 异步消息处理
在前一节实现异步调用的基础上,现在我们来看一下一个完善的Java异步消息处理机制.
[写在本节之前]
在所有这些地方,我始终没有提到设计模式这个词,而事实上,多线程编程几乎每一步都在应该设计模式.你只要能恰如其份地应用它,为什么要在意你用了某某名称的模式呢?
一个说书人它可以把武功招数说得天花乱坠,引得一班听书客掌声如雷,但他只是说书的.真正的武林高手也许并不知道自己的招式在说书人口中叫什么,这不重要,重要的是他能在最恰当的时机把他不知名的招式发挥到极致!
- 2007-03-06 17:16
- 浏览 1829
- 评论(1)
java实现异步调用
在JAVA平台,实现异步调用的角色有如下三个角色:
调用者 取货凭证 真实数据
一个调用者在调用耗时操作,不能立即返回数据时,先返回一个取货凭证.然后在过一断时间后
凭取货凭证来获取真正的数据. ...
- 2007-03-06 17:08
- 浏览 1390
- 评论(0)
volatile 变量
volatile 是用来保证[内存同步]的关键字,内存同步是说在某个线程中修改某实例字段能够及时地
更新到主存储区,而某线程如果需要引用该字段也能及时地从主存储区中得到最新的数据.
简单说它是当前线程的工作存储区和主存储区对某字段的及时同步,所以我们说它是[内存同步],但它
不是线程同步.
也就是说,一个线程对 volatile字段进行更新时,它只会把更新后的值及时地同步到主存储区,而并不
保证其它线程中该字段的值得到及时更新.(不过其它线程如果要对该字段访问的话还会及时从主存储
区COPY的).
因为只保证当前线程中对volatile字段的更新会及时与主存储区同步,所以 ...
- 2007-03-06 17:07
- 浏览 1200
- 评论(0)
实战篇秘籍 (一)
本来这几节的内容想拿出来单独放在秘籍篇中.但由于我在实战篇五的结尾处说:
关于这个例子仍然还有很多可说的内容,所以经由这句话所引出的秘籍篇,作为实战篇的
继续,就叫它实战秘籍.
在实战篇五中,有两 ...
- 2007-03-06 17:05
- 浏览 1252
- 评论(0)
中断线程
有了上一节[线程的中断],我们就好进行如何[中断线程]了.这绝对不是玩一个文字游戏.
是因为"线程的中断"并不能保证"中断线程",所以我要特别地分为两节来说明.
这里说的"中断线程"意思是"停止线程",而为什么不用"停止线程"这个说法呢?
因为线程有一个明确的stop方法,但它是反对使用的,所以请大家记住,在java中以后不要提
停止线程这个说法,忘记它!
但是,作为介绍线程知识的我,我仍然要告诉你为什么不用"停止线程"的理由.
[停止线程]
当在一个线程对象上调 ...
- 2007-03-06 17:04
- 浏览 1246
- 评论(1)
[线程的中断]
不客气地说,至少有一半人认为,线程的"中断"就是让线程停止.
如果你也这么认为,那你对多线程编程还没有入门.
在java中,线程的中断(interrupt)只是改变了线程的中断状态,至于这个中断状态改变后
带来的结果, ...
- 2007-03-06 17:02
- 浏览 1348
- 评论(0)
[深入了解线程对象与线程,线程与运行环境]
在基础篇中的第一节,我就强调过,要了解多线程编程,首要的两个概念就是线程对象
和线程.
现在我们来深入理解线程对象,线程,运行环境之间的关系,弄清Runnable与Thread的
作用.
...
- 2007-03-06 17:01
- 浏览 1329
- 评论(0)
实战篇(二)
本节继续上一节的讨论.
[一个线程在进入对象的休息室(调用该对象的wait()方法)后会释放对该对象的锁],基于这个原因.
在同步中,除非必要,否则你不应用使用Thread.sleep(long l)方法,因为sleep方法并不释放对象的锁.
这是一个极其恶劣的品德,你自己什么事也不干,进入sleep状态,却抓住竞争对象的监视锁不让其它需
要该对象监视锁的线程运行,简单说是极端自私的一种行为.但我看到过很多程序员仍然有在同步方法
中调用sleep的代码.
看下面的例子:
package debug;
class SleepTest{
public synchro ...
- 2007-03-06 17:00
- 浏览 1345
- 评论(0)
实战篇(一)
在进入实战篇以前,我们简单说一下多线程编程的一般原则.
[安全性]是多线程编程的首要原则,如果两个以上的线程访问同一对象时,一个线程会损坏
另一个线程的数据,这就是违反了安全性原则,这样的程序是不能进入实际应用的.
安全性的保证可以通过设计安全的类和程序员的手工控制.如果多个线程对同一对象访问不
会危及安全性,这样的类就是线程安全的类,在JAVA中比如String类就被设计为线程安全的类.
而如果不是线程安全的类,那么就需要程序员在访问这些类的实例时手工控制它的安全性.
[可行性]是多线程编程的另一个重要原则,如果仅仅实现了安全性,程序却在某一点后不能继
续执行或者多 ...
- 2007-03-06 16:59
- 浏览 1363
- 评论(0)
基础篇(四)
wait(),notify()/notityAll()方法
关于这两个方法,有很多的内容需要说明.在下面的说明中可能会有很多地方不能一下子
明白,但在看完本节后,即使不能完全明白,你也一定要回过头来记住下面的两句话:
1、wait(),notify()/notityAll()方法是普通对象的方法(Object超类中实现),而不是线程对象的方法
2、wait(),notify()/notityAll()方法只能在同步方法中调用
[线程的互斥控制]
多个线程同时操作某一对象时,一个线程对该对象的操作可能会改变其状态,而该状态会影响
...
- 2007-03-06 16:57
- 浏览 1799
- 评论(0)
线程对象的几个重要的方法
尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的.
本来打算用一节的篇幅来把线程方法中一些重要的知识说完,但这样下来估计要很常的篇幅,可能要用好几节才能说把和线程方法相关的一些重要的知识说完.
首先我们接基础篇(二)来说明:
start()方法
一个线程对象生成后,如果要产生一个执行的线程,就一定要调用它的start()方法.在介绍这个方法时不得不同时说明run方法.其实线程对象的run方法完全是一个接口回调方法,它是你这个线程对象要完成的具体逻辑.简单说你要做什么就你在run中完成,而如何做,什么时候做就不需要你 ...
- 2007-03-06 16:55
- 浏览 1357
- 评论(0)
在进入java平台的线程对象之前,基于基础知识(一)的一些问题,我先插入两个基本概念.
[线程的并发与并行]
在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式
(大多数是时间片轮巡为主),但无论 ...
- 2007-03-06 16:53
- 浏览 1866
- 评论(2)