1,继承线程类创建³线程
线程类本质上是实现了可运行接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过螺纹类的开始()实例方法。开始()方法是一个本机方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接延伸线程,并复写run()方法,就可以启动新线程并执行自己定义的运行()方法例如:
public class MyThread extends Thread {
public void run() {
System.out.println("MyThread.run()");
}
}
//调用
MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();
myThread2.start();
2,实现Runnable接口创建线程
如果自己的类已经延伸另一个类,就无法直接延伸线程,此时,可以实现一个Runnable接口,如下:
public class MyThread extends OtherClass implements Runnable {
public void run() {
System.out.println("MyThread.run()");
}
}
//调用
MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
thread.start();
3,实现可调用接口通过FutureTask包装器来创建线程线程
可调用接口(也只有一个方法)定义如下:
public class MyCallable<V> extends OtherClass implements Callable<V> {
@Override
public V call() throws Exception {
// TODO Auto-generated method stub
return null;
}
}
//调用
Callable<V> oneCallable = new MyCallable<V>();
//由Callable<Integer>创建一个FutureTask<Integer>对象:
FutureTask<V> oneTask = new FutureTask<V>(oneCallable);
//注释:FutureTask<Integer>是一个包装器,它通过接受Callable<Integer>来创建,它同时实现了Future和Runnable接口。
//由FutureTask<Integer>创建一个Thread对象:
Thread oneThread = new Thread(oneTask);
oneThread.start();
//至此,一个线程就创建完成了。