- 博客(6)
- 问答 (1)
- 收藏
- 关注
原创 Java同步方法与同步语句的对比
众所周知,使用synchronized关键词实现同步的方式有两种:同步方法和同步语句。同步方法相对简单,但不够灵活;同步语句不仅能够避免在同步代码中调用其他对象的方法,从而减少死锁的可能性,而且能实现更细粒度的同步。下面用程序来说明同步语句的两个优势。1.避免在同步代码中调用其它对象的方法。考虑下面的程序:public class DeadLock implements Runnabl
2015-03-22 21:31:46
406
原创 Java多线程与单线程性能对比
执行相同的任务量时,多线程是否比单线程要快?如果是,要快上多少?下面是一个测试程序:MultiThreadsPerformanceTest.javapublic class MultiThreadsPerformanceTest { public static void main(String[] args) throws Exception { int nThre
2015-03-22 20:43:23
2336
原创 for-each 结构的陷阱
for-each结构也叫增强型for语句,相比普通for语句而言,它更加的简洁。代价是它没有普通for语句那么灵活,比如,在你需要同时遍历多个集合或数组时,for-each结构就不适用了。当然了,在你觉得无法使用for-each实现的时候,自然会使用普通for语句。但有时候,在你觉得使用for-each没问题的时候,莫名其妙的错误发生了,且看下面的例子:public class ForEach
2015-03-20 20:35:56
513
翻译 Java 同步
同步线程通信主要通过对域和域指向的对象引用的共享访问进行。这种方式的通信效率很高,但是可能引发两类错误:thread interference(线程干扰)和memory consistency errors (内存一致性错误)。synchronization(同步)可以防止这些错误。然后,同步又会引起thread contention(线程争用)。当两个或以上线程同时访问同一资源,导致Ja
2015-03-18 12:25:11
232
翻译 Java线程对象
每个线程都关联了一个Thread实例。使用线程对象创建并发应用,有两种基本策略:直接控制线程的创建和管理,每当应用程序需要启动一个异步任务时,简单地实例化Thread。将线程管理从应用程序的其余部分抽象出来,把应用程序的任务传给executor。本文仅介绍Thread对象的使用。Executor在Java高级并发对象中讨论。定义并启动线程创建Thread实例的应用必须提供在线程
2015-03-17 15:03:14
397
翻译 Java I/O流
一个I/O流表示一个输入源或一个输出目标。流可以表示多种不同的源和目标,包括磁盘文件,设备,其他程序以及内存数组。流支持多种不同的数据,包括简单的字节,基本数据类型,本地化字符以及对象。某些流仅仅传递数据,另外的流则以某些有用的方式来加工和转换数据。无论流内部如何运作,展现在使用流的程序面前的是同一个简单的模型:流是一连串的数据。程序使用输入流从输入源中每次一项地读取数据,使用输出流向输出
2015-03-16 08:58:09
448
空空如也
Java System.out与System.err同时使用时输出乱序
2015-03-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人