多线程的三种基本实现方式

多线程的三种基本实现方式

创建线程方式一

  1. 继承Thread类
  2. 重写run()方法
  3. new一个执行线程的对象调用start()方法

注意:线程开启并不一定立即执行,由CPU调度执行

package com.edgar.lesson01;

//创建线程方式一:1.继承Thread类 2.重写run()方法 3.new一个执行线程的对象调用start()方法
public class TestThread extends Thread {

    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println("我在看代码" + i);
        }
    }

    public static void main(String[] args) {

        TestThread thread = new TestThread();
        thread.start();
        for (int i = 0; i < 1000; i++) {
            System.out.println("我在学习多线程" + i);
        }
    }
}

创建线程方式二

  1. 实现Runnable类
  2. 重写run()方法
  3. new一个执行线程的对象作为参数丢入new Thread(),调用start()方法
package com.edgar.lesson01;

//创建线程方式二:1.实现Runnable类 2.重写run()方法 3.new一个执行线程的对象作为参数丢入new Thread(),调用start()方法
public class TestRunnable implements Runnable {

    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println("我在看代码" + i);
        }
    }

    public static void main(String[] args) {

        TestRunnable testRunnable = new TestRunnable();
        new Thread(testRunnable).start();
        for (int i = 0; i < 1000; i++) {
            System.out.println("我在学习多线程" + i);
        }
    }
}

创建线程方式二

  1. 实现Callable类
  2. 重写call()方法
  3. 看main方法注释
package com.edgar.lesson01;

import java.util.concurrent.*;

//创建线程方式三:1.实现Callable类 2.重写call()方法 3.看main方法注释
public class TestCallable implements Callable<Boolean> {
    @Override
    public Boolean call() {
        for (int i = 0; i < 100; i++) {
            System.out.println("我在看代码" + i);
        }
        return true;
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {

        TestCallable testCallable = new TestCallable();
        //1.创建执行服务
        ExecutorService es = Executors.newFixedThreadPool(1);
        //2.执行提交
        Future<Boolean> r1 = es.submit(testCallable);
        //3.获取结果
        Boolean res = r1.get();
        System.out.println(res);
        //4,关闭服务
        es.shutdown();
        
    }
}
posted @ 2021-04-12 22:34  EdgarStudy  阅读(325)  评论(0编辑  收藏  举报