Java多线程学习--对象的发布与逸出
(一):
对象发布:使对象可以被其他作用域之外的线程访问。
常见发布形式:
1 将对象引用存储到public变量中:如
public Map registry= new HashMap<>();
2 在非private方法(包括public,protected,package方法)中发挥一个对象:如
private Map registry= new HashMap<>();
public Map getRegistry(){
return registry
}
3 创建内部类,使得当前对象(this)能够被这个内部类使用;new Runnable所创建的匿名类可以用(“外层类名.this”)。也就是说该匿名类的外层类发布了自身当前实例
public void startTask(final Object task){ Thread t = new Thread(new Runnable() { @Override public void run() { // 执行代码 } }); t.start(); }
4 通过方法调用将对象传递给外部方法;
(二)对象逸出
当对象的发布出现我们不期望的结果或者对象本身不是我们所期望的的时候,我们称之为对象逸出
浙公网安备 33010602011771号