Java线程创建模式

来源:互联网 发布:linux重启oracle命令 编辑:程序博客网 时间:2024/06/03 16:24

Java提供了线程类Thread来创建多线程的程序,有三种方式
◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法;
◆实现Runnalbe接口,重载Runnalbe接口中的run()方法。
◆实现Callable接口,重载Callable接口中的call()方法。
1.派生Thread 创建线程

public class Thread_thread extends Thread {    @Override    public void run(){        System.out.println("派生 Thread创建线程成功");    }}public class ThreadMain {    public static void main(String[] args) {//      Thread thread=new Thread(new Thread_Runnable(), "Thread_ranable");//      thread.start();        Thread_thread thread=new Thread_thread();        thread.start();    }}

2.实现Ruannalbe接口创建线程

public class Thread_Runnable implements Runnable {    @Override    public void run() {        System.out.println("实现rannable接口创建线程成功");    }}public class ThreadMain {    public static void main(String[] args) {        Thread thread=new Thread(new Thread_Runnable(), "Thread_ranable");        thread.start();    }}

3.实现Callable接口

public class Thread_Callable implements Callable<String> {    @Override    public String call() throws Exception {        String result="CallAble执行返回";        System.out.println(result);        return result;    }}

一般用第二种的比较多,由于Java语言的特性,只能单继承,但是可以多实现!!第三种方式和第二种的不同点就是 第三种方式有返回值,这个在api中介绍的相对较少,但是要传给ExecutorService的submit方法来执行。
当将一个Callable的对象传递给ExecutorService的submit方法,则该call方法自动在一个线程上执行,并且会返回执行结果Future对象。
同样,将Runnable的对象传递给ExecutorService的submit方法,则该run方法自动在一个线程上执行,并且会返回执行结果Future对象,但是在该Future对象上调用get方法,将返回null。

原创粉丝点击