摘要: 线程的产生 在线程概念出现之前,进程是系统进行资源分配的基本单位,按进程为单位分配资源。同时,进程也是处理器调度的基本单位,进程在任一时刻只有一个执行控制流,通常将这种结构的进程称单线程(结构)进程(singlethreadedprocess)。这个时候进程和线程概念可以不加区别。 但进程存在一些问题:●进程时空的开销大,频繁的进程调度将耗费大量处理器时间,要为每个进程分配存储空间限制了操作系统中进程的总数。●进程通信的代价大,每次通信均要涉及通信进程之间或通信进程与操作系统之间的信息传递。●进程之间的并发性粒度较粗,并发度不高,过多的进程切换和通信延迟使得细粒度的并发得不偿失。●不适合并.. 阅读全文
posted @ 2014-01-23 21:45 寂静沙滩 阅读(506) 评论(0) 推荐(0) 编辑
摘要: java的方法是运行期动态绑定上去的,可以根据自己真正实例化的类来判断调用哪个方法,比如子类重写了父类方法,会调用子类方法。而利用final关键字可以让方法不能重写,就可以在编译期就绑定,这样就可以提高执行效率。private方法默认就是final的final的类里面所有方法默认都是final的====================================================================虚函数定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数[1]语法:virtual 函数返回类型 函数名(参数表) { 函数体 }用途 阅读全文
posted @ 2014-01-23 18:38 寂静沙滩 阅读(328) 评论(0) 推荐(0) 编辑
摘要: java创始成员Patrick Naughton回忆,通常人们会认为Java是学Modula-3和C+,其实这些都是谣传,而对Java影响比较大的则是Objective-C:单 继承、动态绑定和加载、类对象、纯虚函数、反射、原始类型包装类等。Java的接口直接抄自OC的协议。 Objective-C是扩充C的面向对象编程语言。它主要使用于NeXTSTEP和Mac OS X系统上,也可以在gcc运作的系统写和编译。通常人们会认为Java是学Modula-3和C++,甚至还有人说Java是模仿 NewtonScript,这些都是胡说八道和谣传。 Java语法可能与C++类似,但作为语言来讲,其.. 阅读全文
posted @ 2014-01-23 18:32 寂静沙滩 阅读(1035) 评论(0) 推荐(0) 编辑
摘要: 与synchronized不同,Lock完全用Java写成,在java这个层面是无关JVM实现的。 在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concurrent.AbstractQueuedSynchronizer类,实现思路都大同小异,因此我们以ReentrantLock作为讲解切入点。1. ReentrantLock的调用过程经过观察ReentrantLock把所有Lock接口的操作都委派到一个... 阅读全文
posted @ 2014-01-23 18:20 寂静沙滩 阅读(9103) 评论(1) 推荐(1) 编辑
摘要: synchronized 原理 数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchronized的? 本文所指说的JVM是指Hotspot的6u23版本,下面首先介绍synchronized的实现: synrhronized关键字简洁、清晰、语义明确,因此即使有了Lock接口,使用的还是非常广泛。其应用层的语义是可以把任何一个非null对象作为"锁",当synchronized作用在方法上时,锁住的便是对象实例(this 阅读全文
posted @ 2014-01-23 12:46 寂静沙滩 阅读(2513) 评论(1) 推荐(3) 编辑