Java:如何开启一个线程?

答案:

  通过Thread类的start方法或者是线程池的submit方法。


 

 

创建任务

  方法一、继承Thread类,重写run()方法,方法体中为任务。

public class LeaningThread extends Thread {
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println("可是这和我是一个冷酷的复读机又有什么关系呢?");
        }
    }
}

  方法二、实现Runnable类,重写run()方法,方法体中为任务。

public class LeaningRunnable implements Runnable {
    public void run() {
        for (int i = 0; i < 20; i++) {
            System.out.println("可是这和我是一个冷酷的复读机又有什么关系呢?");
        }
    }
}

  方法三、实现Callable类,重写call()方法,方法体中为任务。

public class LeaningCallable implements Callable<Boolean> {
    @Override
    public Boolean call() throws Exception {
        int nextInt = new Random().nextInt(9);
        //如果随机生成的数大于5则返回true
        return nextInt>5?true:false;
    }
}

开启线程

  方法一、调用Thread类的start()方法。

//1.继承Thread的类,直接调用父类的start方法开启线程
new LeaningThread().start();
//2.实现Runnable的类,通过Thread代理,调用start方法开启线程 new Thread(Runnable task).start();
//3.实现Callable的类,通过FutureTask类装饰为Runnable接口的实现类 FutureTask<Boolean> task = new FutureTask<>(new ThreadDemo()); new Thread(task).start();

  方法二、通过线程池的submit(task)方法。

//创建线程池对象
ExecutorService threadPool = Executors.newSingleThreadExecutor();
//开启线程
threadPool.submit(Runnable task);

 

快捷创建

  使用lambda表达式快速创建简单线程。

public class LeaningLambda2 {
    public static void main(String[] args) {//使用lambda表达式快速创建简单线程
        new Thread(()->{
            for(int i =0;i<100;i++) {
                System.out.println("这触及到我的知识盲区了!");
            }
        }).start();
    }
}

 

posted @ 2020-03-19 17:45  在博客做笔记的路人甲  阅读(421)  评论(0编辑  收藏  举报