1)继承Thread,重写其的run方法
public static class Thread1 extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
//do something
}
} 然后,下列代码会创建并启动一个线程: MyThread1 thread = new MyThread1();
thread.start();
或者是
new MyThread1()start();
2)实现Runnable接口,重写run方法.
public static class Thread2 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
//do something
}
}
然后,下列代码会创建并启动一个线程: MyThread2 runnable = new MyThread2();
// 创建一个线程并提供给其一个实现了 Runnable 接口的对象
Thread thread = new Thread(runnable);
// 启动这个线程
thread.start();
同样,可以使用
MyThread2 runnable = new MyThread2();
// 创建一个线程并提供给其一个实现了 Runnable 接口的对象
new Thread(runnable).start();
public static class MyCallableClass implements Callable{
@Override
public String call() throws Exception{
//do something
return "";
}
} Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值,
FutureTask<Integer> future = new FutureTask<Integer>(callable);
new Thread(future).start();
本文介绍了在Java中创建线程的三种主要方法:继承Thread类并重写run方法;实现Runnable接口并重写run方法;实现Callable接口并重写call方法,这种方式允许线程执行后返回结果。

被折叠的 条评论
为什么被折叠?



