随笔分类 -  Java

上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页
摘要:面向字符的输出流都是类 Writer 的子类,其类层次结构如图 10-5 所示。图10-5 Writer的类层次结构图表 10-3 列出了 Writer 的主要子类及说明。表 10-3 Writer 的主要子类类名功能说明CharArrayWriter写到字符数组的输出流BufferedWriter... 阅读全文
posted @ 2015-05-20 08:51 Coda 阅读(1845) 评论(0) 推荐(0) 编辑
摘要:字符流是针对字符数据的特点进行过优化的,因而提供一些面向字符的有用特性,字符流的源或目标通常是文本文件。 Reader和Writer是java.io包中所有字符流的父类。由于它们都是抽象类,所以应使用它们的子类来创建实体对象,利用对象来处理相关的读写操作。Reader和Writer的子类又可以分为两... 阅读全文
posted @ 2015-05-19 08:23 Coda 阅读(4300) 评论(0) 推荐(1) 编辑
摘要:输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作。几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等。通过输入和输出操作可以从外界接收信息,或者是把信息传递给外界。Java把这些输入与输出操作用流来实现,通过统一的接口来表示,从而使程序设计... 阅读全文
posted @ 2015-05-18 08:16 Coda 阅读(1055) 评论(0) 推荐(0) 编辑
摘要:有时,线程的挂起是很有用的。例如,一个独立的线程可以用来显示当日的时间。如果用户不希望用时钟,线程被挂起。在任何情形下,挂起线程是很简单的,一旦挂起,重新启动线程也是一件简单的事。挂起,终止和恢复线程机制在Java 2和早期版本中有所不同。尽管你运用Java 2的途径编写代码,你仍需了解这些操作在早... 阅读全文
posted @ 2015-05-17 12:26 Coda 阅读(2386) 评论(1) 推荐(0) 编辑
摘要:需要避免的与多任务处理有关的特殊错误类型是死锁(deadlock)。死锁发生在当两个线程对一对同步对象有循环依赖关系时。例如,假定一个线程进入了对象X的管程而另一个线程进入了对象Y的管程。如果X的线程试图调用Y的同步方法,它将像预料的一样被锁定。而Y的线程同样希望调用X的一些同步方法,线程永远等待,... 阅读全文
posted @ 2015-05-16 08:11 Coda 阅读(880) 评论(0) 推荐(0) 编辑
摘要:上述例题无条件的阻塞了其他线程异步访问某个方法。Java对象中隐式管程的应用是很强大的,但是你可以通过进程间通信达到更微妙的境界。这在Java中是尤为简单的。像前面所讨论过的,多线程通过把任务分成离散的和合乎逻辑的单元代替了事件循环程序。线程还有第二优点:它远离了轮询。轮询通常由重复监测条件的循环实... 阅读全文
posted @ 2015-05-15 08:10 Coda 阅读(1157) 评论(1) 推荐(0) 编辑
摘要:当两个或两个以上的线程需要共享资源,它们需要某种方法来确定资源在某一刻仅被一个线程占用。达到此目的的过程叫做同步(synchronization)。像你所看到的,Java为此提供了独特的,语言水平上的支持。同步的关键是管程(也叫信号量semaphore)的概念。管程是一个互斥独占锁定的对象,或称互斥... 阅读全文
posted @ 2015-05-14 08:04 Coda 阅读(1152) 评论(0) 推荐(2) 编辑
摘要:线程优先级被线程调度用来判定何时每个线程允许运行。理论上,优先级高的线程比优先级低的线程获得更多的CPU时间。实际上,线程获得的CPU时间通常由包括优先级在内的多个因素决定(例如,一个实行多任务处理的操作系统如何更有效的利用CPU时间)。一个优先级高的线程自然比优先级低的线程优先。举例来说,当低优先... 阅读全文
posted @ 2015-05-13 07:56 Coda 阅读(937) 评论(2) 推荐(0) 编辑
摘要:如前所述,通常你希望主线程最后结束。在前面的例子中,这点是通过在main()中调用sleep()来实现的,经过足够长时间的延迟以确保所有子线程都先于主线程结束。然而,这不是一个令人满意的解决方法,它也带来一个大问题:一个线程如何知道另一线程已经结束?幸运的是,Thread类提供了回答此问题的方法。有... 阅读全文
posted @ 2015-05-12 23:14 Coda 阅读(1533) 评论(0) 推荐(0) 编辑
摘要:到目前为止,我们仅用到两个线程:主线程和一个子线程。然而,你的程序可以创建所需的更多线程。例如,下面的程序创建了三个子线程: 1 // Create multiple threads. 2 class NewThread implements Runnable { 3 String name... 阅读全文
posted @ 2015-05-11 08:00 Coda 阅读(603) 评论(0) 推荐(0) 编辑
摘要:大多数情况,通过实例化一个Thread对象来创建一个线程。Java定义了两种方式:实现Runnable 接口;可以继承Thread类。下面的两小节依次介绍了每一种方式。实现Runnable接口 创建线程的最简单的方法就是创建一个实现Runnable 接口的类。Runnable抽象了一个执行代码单元。... 阅读全文
posted @ 2015-05-10 09:34 Coda 阅读(1618) 评论(0) 推荐(1) 编辑
摘要:当Java程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main thread),因为它是程序开始时就执行的。主线程的重要性体现在两方面:它是产生其他子线程的线程;通常它必须最后完成执行,因为它执行各种关闭动作。尽管主线程在程序启动时自动创建,但它可以由一个Thread对象控制。为此,你... 阅读全文
posted @ 2015-05-09 21:54 Coda 阅读(1466) 评论(1) 推荐(0) 编辑
摘要:Java运行系统在很多方面依赖于线程,所有的类库设计都考虑到多线程。实际上,Java使用线程来使整个环境异步。这有利于通过防止CPU循环的浪费来减少无效部分。为更好的理解多线程环境的优势可以将它与它的对照物相比较。单线程系统的处理途径是使用一种叫作轮询的事件循环方法。在该模型中,单线程控制在一无限循... 阅读全文
posted @ 2015-05-08 08:13 Coda 阅读(1168) 评论(3) 推荐(1) 编辑
摘要:和其他多数计算机语言不同,Java内置支持多线程编程(multithreaded programming)。多线程程序包含两条或两条以上并发运行的部分。程序中每个这样的部分都叫一个线程(thread),每个线程都有独立的执行路径。因此,多线程是多任务处理的一种特殊形式。你一定知道多任务处理,因为它实... 阅读全文
posted @ 2015-05-07 23:26 Coda 阅读(876) 评论(0) 推荐(0) 编辑
摘要:断言的概念断言用于证明和测试程序的假设,比如“这里的值大于 5”。断言可以在运行时从代码中完全删除,所以对代码的运行速度没有影响。断言的使用断言有两种方法:一种是 assert> ;另一种是 assert> :>。如果布尔表达式的值为false , 将抛出AssertionError 异常; 细节描... 阅读全文
posted @ 2015-05-06 22:39 Coda 阅读(1291) 评论(0) 推荐(0) 编辑
摘要:尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况。这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwable的一个子类)。你的子类不需要实际执行什么——它们在类型系统中的存在允许你把它们当成异常使用。Exc... 阅读全文
posted @ 2015-05-05 22:35 Coda 阅读(1052) 评论(0) 推荐(0) 编辑
摘要:在标准包java.lang中,Java定义了若干个异常类。前面的例子曾用到其中一些。这些异常一般是标准类RuntimeException的子类。因为java.lang实际上被所有的Java程序引入,多数从RuntimeException派生的异常都自动可用。而且,它们不需要被包含在任何方法的thro... 阅读全文
posted @ 2015-05-04 22:41 Coda 阅读(546) 评论(0) 推荐(0) 编辑
摘要:当异常被抛出,通常方法的执行将作一个陡峭的非线性的转向。依赖于方法是怎样编码的,异常甚至可以导致方法过早返回。这在一些方法中是一个问题。例如,如果一个方法打开一个文件项并关闭,然后退出,你不希望关闭文件的代码被异常处理机制旁路。finally关键字为处理这种意外而设计。finally创建一个代码块。... 阅读全文
posted @ 2015-05-03 22:21 Coda 阅读(1016) 评论(3) 推荐(1) 编辑
摘要:到目前为止,你只是获取了被Java运行时系统抛出的异常。然而,程序可以用throw语句抛出明确的异常。Throw语句的通常形式如下: throw ThrowableInstance;这里,ThrowableInstance一定是Throwable类类型或Throwable子类类型的一个对象。简单类... 阅读全文
posted @ 2015-05-01 12:12 Coda 阅读(937) 评论(0) 推荐(0) 编辑
摘要:Try语句可以被嵌套。也就是说,一个try语句可以在另一个try块内部。每次进入try语句,异常的前后关系都会被推入堆栈。如果一个内部的try语句不含特殊异常的catch处理程序,堆栈将弹出,下一个try语句的catch处理程序将检查是否与之匹配。这个过程将继续直到一个catch语句匹配成功,或者是... 阅读全文
posted @ 2015-04-30 23:56 Coda 阅读(4079) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页