天天看点

深入Java线程管理(一):线程的实现方式

java的线程实现方式一共有三种,继承thread、实现runable接口,实现callable接口。不过实现runnable接口与实现callable接口的方式基本相同,只是callable接口里定义的方法有返回值,可以声明抛出异常而已。

一、 继承thread类创建线程类

1) 定义thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务。

2) 创建thread子类的实例,即创建了线程对象。

3) 调用线程对象的start()方法来启动该线程。

这里我们需要注意的是,启动线程必须通过start()方法,而不是直接调用run()方法。

除此以外,上面程序中海油如下两个方法:

· thread.currentthread(): currentthread()是thread类的静态方法,该方法总是返回当前正在执行的线程对象。

· getname(): 该方法是thread类的实例方法,该方法返回调用该方法的线程名字。

二、 实现runnable接口创建线程类

1)定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。

2)创建runnable实现类的实例,并以此实例作为thread的target来创建thread对象,该thread对象才是真正的线程对象。

3)调用线程对象的start()方法来启动该线程。

对比firstthread中的run()方法和secondthread中的run()方法,可以发现继承thread类来获取当前线程对象比较简单,直接可以使用this就可以了; 但通过实现runnable接口来获取当前线程,就必须使用thread.currentthread()方法。

三、 使用callable和future创建线程

callable接口提供了一个call()方法,作为线程执行体,但是call()方法比run方法更加强大。

· call()方法可以有返回值。

· call()方法可以声明抛出异常。

深入Java线程管理(一):线程的实现方式
深入Java线程管理(一):线程的实现方式