标签:新生代 java cto type latch roc semaphore 静态变量 none
总结:
综上:新生代基本采用复制算法,老年代采用标记整理算法。cms采用标记清理。
总结:
在每个线程中都是顺序执行的,所以sl.printAll();必须在前三句执行之后执行,也就是输出的内容必有(连续或非连续的)ABC。
而线程之间是穿插执行的,所以一个线程执行 sl.printAll();之前可能有另一个线程执行了前三句的前几句。
E答案相当于线程1顺序执行完然后线程2顺序执行完。
G答案则是线程1执行完前三句add之后线程2插一脚执行了一句add然后线程1再执行 sl.printAll();输出ABCA。接着线程2顺序执行完输出ABCABC
输出加起来即为ABCAABCABC。
总结:
A,Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。
B,CyclicBarrier 主要的方法就是一个:await()。await() 方法没被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此 CyclicBarrier 上面阻塞的线程开始运行。
C,直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门闩的意思顾名思义就是阻止前进。在这里就是指 CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程。
D,Counter不是并发编程的同步器
总结:
java中如果碰到char、byte和short参与运算时,会自动将这些值转换为int类型然后再进行运算。
这里a1和a2就自动转为int类型了,结果也为Int类型。把一个int类型赋值给byte需要转型。
总结:
多态绑定机制:
实例方法与引用变量所引用的对象的方法绑定;
静态方法与引用变量所声明的类型的方法绑定;
成员变量(实例变量、静态变量)与引用变量所声明的类型的成员变量绑定。
在这道题目中,由于都是实例方法,所以与所引用的对象的方法绑定。(new 后跟引用对象)
对于多态,可以总结它为:
一、使用父类类型的引用指向子类的对象;
二、该引用只能调用父类中定义的方法和变量;
三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)
四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。
多态的3个必要条件:
1.继承 2.重写 3.父类引用指向子类对象。
总结:
首先final声明的方法是不能被覆盖的,但是这里并不错误,因为方法是private的,
也就是子类没有继承父类的run方法,因此子类的run方法跟父类的run方法无关,
并不是覆盖。new Car().run()也是调用子类的run方法。
标签:新生代 java cto type latch roc semaphore 静态变量 none
原文地址:http://blog.51cto.com/12222886/2061149