简单线程创建

1、Thread\Runnable\FutureTask

1)继承Thread,重写run方法

最简单的写法,创建一个线程类,继承Thread,重写run方法。

使用的时候,直接new 一个线程类对象即可。

2)实现Runnable方法

与上一个方法类似,创建一个线程类,实现Runnable类,重写run方法。

使用的时候,把Runnable对象作为Thread的参数即可。

3)FutureTask

和前面两种有本质的区别,有返回值,可以实时获取线程当前执行状态、控制线程是否取消。

先创建一个Callable的实现类,重写call方法。

然后把Callable实现类的对象作为参数,创建FutureTask对象

然后把FutureTask对象作为Thread的参数,创建Thread对象。

注:项目开发中一般3种方法都不用,而是用线程池来创建线程。

2、Thread和Runnable用法区别

Runnable比Thread的优势在于:

Runnable的写法是作为Thread的参数,所以可以多个Thread共用一个Runnable实例,实现了资源的共享。而Thread是继承的方式,多个Thread都是独立的对象,无法相互共享资源。所以多线程肯定是用Runnable。

3、start方法和run方法区别

thread.start()方法:表示启动一个线程,让这个线程执行thread内部的run()方法。

thread.run()方法:不启动线程,直接让主线程执行thread内部定义的run()方法。

你可能感兴趣的:(简单线程创建)