线程专区---第1集实现线程的4种方式

1 自定义一个类,然后实现 Runnable接口,然后实现run()方法。

public class MyRunnable implements Runnable{
    public void run() {
        System.out.println("我是MyRunnable");
    }
}

new Thread(new MyRunnable()).start();

2 自定义一个自己的线程类,然后继承 Thread 类,且重新run方法

public class MyThread1 extends Thread {
    public void run() {
        System.out.println("我是线程1");
    }
}

3 自定义一个自己的Callable类,然后实现它的call方法。

public class MyCallable<V> implements Callable<V> {

    @Override
    public V call() throws Exception {
        System.out.println("我是SomeCallable.call方法");
        return null;
    }
}
Callable<String> myCallable = new MyCallable<String>();
//由Callable<String>创建一个FutureTask<String>对象:
FutureTask<String> oneTask = new FutureTask<String>(oneCallable);
//注释:FutureTask<String>是一个包装器,它通过接受Callable<String>来创建,它同时实现了Future和Runnable接口。
//由FutureTask<Integer>创建一个Thread对象:
Thread oneThread = new Thread(oneTask);
oneThread.start();

4 通过线程池实现 Runnable

ExecutorService pool = Executors.newFixedThreadPool(5);
int i = 0;
for (; i < 50; i++) {
    int finalI = i;
    pool.submit(() -> System.out.println("我是任务" + finalI));
}
pool.shutdown();

5 通过线程池实现Callable接口

Future<Integer> res = pool.submit(() -> {
    return finalI;
});

猜你喜欢

转载自blog.csdn.net/weixin_39405857/article/details/89285919