首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

java 线程中一些模糊不清概念的解释

2012-08-25 
java 线程中一些模糊概念的解释1,并发与并行??? 并发---线程之间相互切换执行??? 并行---线程之间齐头并进

java 线程中一些模糊概念的解释

1,并发与并行

??? 并发---线程之间相互切换执行

??? 并行---线程之间齐头并进,主要体现在多处理器的环境下

?

2。thread实例与创建的线程之间的关系

???? 属于两个部门,即使线程结束了,实例依然存在。主程序结束的时,并不代表创建的线程也结束,如main方法

?

3。 Thread.sleep(2000),让当前线程休眠2秒,捕捉Interrupted exception

?

4。synchronized

???? synchronized 加在方法上,等同于 synchronized (this) {}//阻挡,作用于实例的这个方法,多个实例之间无任何影响

???? static synchronized ---类方法锁定,等同于synchronized (A.class) {}//阻挡,锁定这个类A,实例之间互斥,当前只有一个类在操作

?

5. thread-safe 线程安全

??? 可容一个以上线程使用,而不危及安全性的类称为 thread-safe类。

??? 常用的举例,java.util.Vector是线程安全的,java.util.ArrayList不是,所以在使用ArrayList的时候要使用synchronized来锁定,还有MAP,SET都是不安全的,都需要使用synchronized类构建安全的变量

?

6。多线程程序设计应遵循的原则

???? 保证程序的安全性和生存性

7。使用synchronized会提高程序的效率吗?为什么?该如何解决?
? 原因:1。线程获取锁时需要消耗时间,2,线程冲突时,线程等待锁的释放需要时间,导致性能下降。
? 解决:尽可能减小程序锁定的范围,使用synchronized块

8。定义变量的时候需要注意的问题,防止出现线程不安全,造成值的改变

??? 基本数据类型,引用类型是原子的,不会出现值(地址)被分割的情况,

?? 但是在线程间共享long,double类型需在声明前加volatile关键字,让他作为一个整体

9.设计一个immutable(不变) ,安全的类

???? 首先将类声明成final,则禁止子类继承,修改类的属性;

???? 类的字段只有get方法,去除set方法,且为属性赋值时,只使用类的有参构造器;

???? 同时将属性声明为final类型,保证通过构造器赋值之后又,再不允许修改。

??? 好处:避免使用synchronized,提高程序效率

?? 适用:适用于多个线程之间共享实例的时候

10. 使用wait(),notify()方法时必须保证实例是被所定的,即使用synchronized关键字

?

11 wait(),sleep(),yield()区别,哪个是Object的方法,哪个Thread的方法
? wait是Object类的方法,sleep与yield都是Thread类的方法。wait调用的时候需要注意的是该方法是释放锁标志的, 而sleep在调用的时候是紧紧抱着锁标志的,也就是等他完全执行完成了才可以让其他线程来访问的。
? sleep 方法使当前运行中的线程睡眼一段时间,进入不可运行状态,这段时间的长短是由程序设定的,yield 方法使当前

线程让出 CPU 占有权,但让出的时间是不可设定的。实际上,yield()方法对应了如下操作: 先检测当前是否有比当前线程优先级别高的线程,如有,则把 CPU 的占有权交给此线程,否则,继续运行原来的线程。所以yield()方法称为“退

让”,它把运行机会让给了同等优先级的其他线程。

?

热点排行