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(); } }