Java三种线程创建调用方式-Thread、Runnable与Callable

简介: 继承类Thread与实现接口Runnable类似,因为Thread也是实现了接口Runnable;继承类Thread与实现接口Runnable的run方法与start方法都会调用执行体,run同步执行,start异步执行;实现接口Callable的线程被调用时,主线程会阻塞等待执行结果;值得注意的是:实现接口Callable的线程名称和主线程名称一样。

继承类Thread

创建方式:

public class ThreadExtendsThread extends Thread {
    public void run() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) { }
        // 输出当前进程名称
        System.err.println("ThreadExtendsThread : " 
            + Thread.currentThread().getName() 
            + " : " + System.currentTimeMillis());
    }
}

调用代码:

new ThreadExtendsThread().start();

实现接口Runnable

创建方式:

public class ThreadImplRunnable implements Runnable {
    public void run() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) { }
        // 输出当前进程名称
        System.err.println("ThreadExtendsThread : " 
                + Thread.currentThread().getName() 
                + " : " + System.currentTimeMillis());
    }
}

调用代码:

new Thread(new ThreadImplRunnable()).start();

实现接口Callable

创建方式:

public class ThreadImplCallable implements Callable<String> {
    public String call() throws Exception {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) { }
        // 输出当前进程名称
        System.err.println("ThreadImplCallable : " 
                + Thread.currentThread().getName() 
                + " : " + System.currentTimeMillis());
        return Thread.currentThread().getName();
    }
}

调用代码:

FutureTask<String> futureTask = new FutureTask<String>(new ThreadImplCallable());
futureTask.run();
try {
    System.err.println(futureTask.get(60000, TimeUnit.MILLISECONDS));
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
相关文章
|
1天前
|
安全 Java
【JAVA进阶篇教学】第十篇:Java中线程安全、锁讲解
【JAVA进阶篇教学】第十篇:Java中线程安全、锁讲解
|
1天前
|
安全 Java
【JAVA进阶篇教学】第六篇:Java线程中状态
【JAVA进阶篇教学】第六篇:Java线程中状态
|
1天前
|
缓存 Java
【JAVA进阶篇教学】第五篇:Java多线程编程
【JAVA进阶篇教学】第五篇:Java多线程编程
|
1天前
|
Java
【JAVA基础篇教学】第十二篇:Java中多线程编程
【JAVA基础篇教学】第十二篇:Java中多线程编程
|
Java
Java多线程02—实现Runnable接口的方式创建线程
Java多线程02—实现Runnable接口的方式创建线程
91 0
|
Java
Java多线程初学者指南(3):使用Runnable接口创建线程
本文为原创,如需转载,请注明作者和出处,谢谢!实现Runnable接口的类必须使用Thread类的实例才能创建线程。通过Runnable接口创建线程分为两步: 1. 将实现Runnable接口的类实例化。
665 0
|
1天前
|
安全 Java
java-多线程学习记录
java-多线程学习记录
|
2天前
|
Java
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
10 0
|
2天前
|
设计模式 消息中间件 安全
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列
9 0