三、线程的创建


1.继承的方式
继承自Thread类,是所有线程类的父类,实现了对线程的抽取和封装

使用步骤:
a.定义一个类,继承自Thread类,并重写其中的run()方法【该run方法的方法体就代表了该线程的线程执行体,同时也是该线程需要处理的任务】
b.实例化一个自定义类的对象,相当于创建一个线程【new】
c.使用线程对象调用start(),表示该线程被开启【runnable】


总结:
a.如果一个线程中run方法中的代码执行完毕,说明该线程结束【dead】
b.一般情况下,子线程都会创建在主线程中【mian方法的方法执行体就相当于是主线程的线程执行体】,多个子线程和主线程之间的关系是并发【多个并发执行的线程,并不是真正意义上的同时执行,实际上是争抢cpu时间片,cpu在不同的线程之间进行快速的切换】

2.实现接口
实现Runnable接口

使用步骤:
a.定义一个类,实现Runnable接口,实现接口中的run方法【该run方法的方法执行体就代表了线程的执行体】
b.创建实现类的对象,并不是一个线程对象,而是作为一个参数传给Thread类,使用Thread类创建出来的对象才是真正的线程对象
c.直接使用线程对象调用start方法启动线程


3.采用两种方式创建线程的区别:
a.实现Runnable接口的方式
1>实现类只是实现了Runnable接口,同时可以继承其他的类【扩展性更强】
2>多个线程可以使用同一个target,所以非常适合处理多个线程共享同一份资源的情况
3>弊端:编程稍微复杂,不直观,如果要访问当前线程,必须使用Thread.currentThread()

b.继承Thread类的方式
1>编程稍微简单,直观,如果要访问当前的线程,可以通过Thread.currentThread(),可以直接通过super
2>弊端:子类只能有一个父类【单继承】

实际上大多数的多线程的应用完全可以用实现Runnable接口的方式【以后常用,使用匿名内部类替换】

 

posted @ 2017-08-20 10:52  又等风来  阅读(183)  评论(0编辑  收藏  举报