摘要:
注:本文的主要参考资料为结城浩所著《JAVA多线程设计模式》。单线程执行模式(Single Threaded Execution Pattern)是最简单的多线程设计模式,几乎所有其他的模式都在不同程度上应用了该模式。先看一个程序,通过它可以体验多线程程序无法正确执行的场景,这里所写的是个关于“只能单个通过的门”的程序:有三个人频繁地、反复地经过一个只能容许单人经过的门,当人通过门的时候,这个程序显示出通过人的“姓名”与“出生地”,其代码如下:Java代码publicclassGate{privateintcounter=0;privateStringname="Nobody&quo 阅读全文
2013年9月14日 #
摘要:
这个专题主要讨论并发编程的问题,所有的讨论都是基于JAVA语言的(因其独特的内存模型以及原生对多线程的支持能力),不过本文传达的是一种分析的思路,任何有经验的朋友都能很轻松地将其扩展到任何一门语言。注:本文的主要参考资料为结城浩所著《JAVA多线程设计模式》。线程的英文名Thread,原意指“细丝”。在多线程程序中,若要追踪各个线程的轨迹,就会派生出一系列错综复杂的乱线团。假设在运行过程中,如果有人问到“请问现在执行到代码的哪一部分了?”,你需要多个手指头才能指出正确的地方。当应用程序的规模、复杂程度达到一定程度时,并发设计是一个必将考虑到的问题,以下是一些常见的应用:GUI:以word为例, 阅读全文
摘要:
今天在书上看到callable和future这个两个东东,以前没有见过,现在学习一下,拿出来晒晒。Runnbale封装一个异步运行的任务,可以把它想象成一个没有任何参数和返回值的异步方法。Callable和Runnable相似,但是它有返回值。Callable接口是参数化的类型,只有一个方法call()public interface Callable {V call() throws Exception;}类型参数就是返回值的类型,例如:Callable表示最终返回一个String的异步操作(计算)。Futrue是保存异步计算结果。当使用Future时,你就启动一个计算,把这个计算交给某个线 阅读全文
摘要:
java中使用多线程不能明显提高程序效率的一些原因. 使用多个线程来处理多任务的时候,效率肯定是有提高的.但是必须要慎用,否则容易出现问题. 1.多线程主要是为了充分利用多核cpu,大内存这些资源. 如果你的硬件跟不上,只有一个cpu,那么多线程从并发变成了串行了,另外再加上线程上下文切换的时候,那你就得不偿失了. 2.原子问题 如果多线程是同步操作一个原子数据,(多个线程同步去处理一个加锁的对象),那效率肯定不会提升,就好像1个人去做1件事和多个人排队去做一件事效率是一样的; 3.线程的个数对于一个应用程序来讲的话,往往会有一个临界值。 临界资源... 阅读全文