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

来源:互联网 发布:java applet实例 编辑:程序博客网 时间:2024/06/06 05:55

内部类

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

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

  常见用法:

   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、线程池      后续

原创粉丝点击