创建线程的方法:
继承Thread 类
Thread 类本质上是实现了Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread 类的start()实例方法。start()方法是一个native 方法,它将启动一个新线程,并执行run()方法。
实现Runnable 接口
如果自己的类已经extends 另一个类,就无法直接extends Thread,此时,可以实现一个Runnable 接口;
启动线程需要实例化一个Thread,并传入实现runnable的实例,调用thread.start(),thread的run方法会调用target.run();
实现Callable 接口
Callable<Integer> callableObj = () -> { int result = integers.stream().mapToInt(i ->i.intValue()).sum(); return result; }; ExecutorService service = Executors.newSingleThreadExecutor(); Future<Integer> future = service.submit(callableObj); Integer result=0; result = future.get();
通过线程池方法
线程池工作顺序
线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。不过,就算队列 里面有任务,线程池也不会马上执行它们。
1.当线程数小于核心线程数时