Java基础

Java线程的创建和启动

2017-04-26  本文已影响72人  不知名bzm

Java中创建线程有3种方式,直接上代码。

// 继承Thread类,重写run()方法
public class ThreadTest extends Thread {

    private int i;

    // 重写run方法
    @Override
    public void run() {
        for (; i < 20; i++) {
            System.out.println(getName() + " " + i);
        }
    }
}

对应的调用方式

new ThreadTest().start();

该方法

// 实现Runnable接口,实现run()方法
class ThreadRunnableTest implements Runnable {
    private int i;

    @Override
    public void run() {
        for (; i < 20; i++) {
            System.out.println(Thread.currentThread().getName() + "" + i);
        }
    }
}

对应的调用方式

ThreadRunnableTest runnableTest = new ThreadRunnableTest();
new Thread(runnableTest, "thread----1---").start();

该方法优劣势见方法3

// 实现Callable<T>接口,实现call()方法
// 可以设置有返回值,并抛出异常
class ThreadCallableTest implements Callable<Integer> {

    // 类似上面的run方法内容
    @Override
    public Integer call() throws Exception {
        int i = 0;
        for (; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + " " + i);
        }
        return i;
    }
}

对应的调用方式

ThreadCallableTest threadCallableTest = new ThreadCallableTest();
FutureTask<Integer> task = new FutureTask<Integer>(threadCallableTest);
new Thread(task, "task--1--").start(); // 此处的task作为线程的target
// 打印返回值
try {
      System.out.println("task return:" + task.get());
} catch (Exception e) {
      e.printStackTrace();
}

该方法

上一篇 下一篇

猜你喜欢

热点阅读