编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。一般有三种方法,Thread,Runnable,Callable.
Runnable 和 Callable 的区别是,
(1)Callable 规定的方法是 call(),Runnable 规定的方法是 run().
(2)Callable 的任务执行后可返回值,而 Runnable 的任务是不能返回值得
(3)call 方法可以抛出异常,run 方法不可以
(4)运行 Callable 任务可以拿到一个 Future 对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过 Future 对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。
1、通过实现 Runnable 接口来创建 Thread 线程:
步骤 1:创建实现 Runnable 接口的类:
class SomeRunnable implements Runnable
{
public void run()
{
//do something here
}
}
步骤 2:创建一个类对象:
Runnable oneRunnable = new SomeRunnable();
步骤 3:由 Runnable 创建一个 Thread 对象:
Thread oneThread = new Thread(oneRunnable);
步骤 4:启动线程:
oneThread.start();
至此,一个线程就创建完成了。
注释:线程的执行流程很简单,当执行代码 oneThread.start();时,就会执行 oneRunnable 对象中的 void run();方法,
该方法执行完成后,线程就消亡了。
2、与方法 1 类似,通过实现 Callable 接口来创建 Thread 线程:其中,Callable 接口(也只有一个方法)定义如下:
public interface Callable
{
V call() throws Exception;
}
步骤 1:创建实现 Callable 接口的类 SomeCallable(略);
步骤 2:创建一个类对象:
Callable oneCallable = new SomeCallable();
步骤 3:由 Callable 创建一个 FutureTask 对象:
FutureTask oneTask = new FutureTask(oneCallable);
注释:FutureTask是一个包装器,它通过接受Callable来创建,它同时实现了Future和Runnable接口。
步骤 4:由 FutureTask 创建一个 Thread 对象:
Thread oneThread = new Thread(oneTask);
步骤 5:启动线程:
oneThread.start();
至此,一个线程就创建完成了。
3、通过继承 Thread 类来创建一个线程:
步骤 1:定义一个继承 Thread 类的子类:
class SomeThead extends Thraad
{
public void run()
{
//do something here
}
}
步骤 2:构造子类的一个对象:
SomeThread oneThread = new SomeThread();
步骤 3:启动线程:
oneThread.start();
至此,一个线程就创建完成了。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于