线程类
java提供了Runnable接口和其子类Thread类可来实现多线程的功能(在JDK1.5之后新增了Callable接口实现可以拥有返回值的线程类)。继承Thread类或实现Runnable接口(Callable接口)并重写或实现run()方法(Callable接口为call()方法),之后调用这个类对象的start()方法便可创建一个新线程。
方法一:继承Thread类
利用Thread类创建一个线程并直接利用该对象启动一个线程。
//自定义线程类
class MyThread extends Thread{
@Override
public void run() {
//线程启动后执行的代码块
}
}
//线程启动类
public class ThreadStater {
public static void main(String[] args) {
MyThread myThread=new Mythread();
//调用线程对象的start()方法启动线程
myThread.start();
}
}
方法二:实现Runnable接口
利用Runnable接口创建一个线程可执行任务,将此对象放入Thread对象中启动一个线程。
//自定义线程任务
class MyThread implements Runnable{
@Override
public void run() {
//线程启动后执行的代码块
}
}
//线程启动类
public class ThreadStater {
public static void main(String[] args) {
MyThread myThread=new MyThread();
//将自定义线程可执行任务作为参数创建一个线程
Thread thread = new Thread(myThread);
//调用线程对象的start()方法启动线程
thread.start();
}
}
方法三:实现Callable接口
利用Callable接口创建一个任务,将此对象放入对象FutureTask中创建一个线程可执行对象,此对象可以对Callabl任务进行一些监测,之后将FutrueTask对象放入Thread对象中启动一个线程。
//自定义线程任务
class MyThread implements Callable<Integer> {
@Override
//call方法可以声明返回值
public Integer call() throws Exception {
//线程启动后执行的代码块
return 0;
}
}
//线程启动类
public class ThreadStater {
public static void main(String[] args) throws ExecutionException, InterruptedException {
MyThread myThread = new MyThread();
//将自定义任务作为参数创建一个线程可执行任务
FutureTask futureTask=new FutureTask<Integer>(myThread);
//将线程可执行任务作为参数创建一个线程
Thread thread=new Thread(futureTask);
//调用线程对象的start()方法启动线程
thread.start();
//通过FurtureTask对象的get()方法可以获得任务返回值
futureTask.get();
}
}