您的位置:首页 > 其它

内部类、线程和并发的个人总结

2013-11-17 12:17 106 查看
内部类

   内部类分为:普通内部类、程序块中的内部类、静态内部类、匿名内部类。 

  普通内部类必须在宿主构造实例时才能构造,普通内部类保有宿主的引用可以不受限制的访问宿主的任何成员。

  常见用法:

   1:利用内部类隐藏实现接口

   当程序中某些逻辑要开发新的类来实现,而这时内部类是最方便时,使用内部类来实现逻辑。

   2:方法中的内部类和匿名内部类

   在程序块中也可以定义内部类,有时甚至是没有名称的内部类(匿名内部类)。

   3:静态内部类(嵌套类)

   无需宿主的实例即可创建,因此静态内部类不能访问宿主类的非静态成员。

   

 

线程和并发

   

线程使得一个程序可以处理多个请求。 

   

常用方法:

  1、实现线程的两种方法

   一.继承java.lang.Thread类,重写run( )方法,在run方法中完成线程功能。

二.通过Runnable接口实现。

实现Runnable接口必须实现run方法,在run方法中完成功能处理,在创建线程时要以实现Runnable接口的实例为参数构造Thread,调用其start方法启动线程。

2、匿名内部类中的线程

可以使用匿名内部类实现线程。

如:

方法名 {

//方法体中

new Thread(){

public void run () {

//实现功能

}

} .start();

}

 

3、共享资源的竞争

       引入synchronized 程序段来控制竞争程序段的运行

 

可以给程序段和方法加同步“锁”。

在java中任何对象都能作为同步锁(Object已经具有次功能)

用synchronized限定方法时,别的线程不能调用同一对象(一定是同一实例)的synchronized方法。即不能调用同一对象的synchronized方法。

 

4、线程间协作

 线程间的协作靠wait(),notify(),synchronized方法来完成。

如:一个线程或的同步锁执行到一半时把锁让出,wait()一下,使另一个线程获得同步锁,当其执行完时notify()打醒它。

wait()和notify()会影响效率。

5、线程池      后续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: