面试官有问题就是想要有返回值的线程怎么办
public class CallableDemo implements Callable线程池的种类{ @Override public String call() throws Exception { int priority = Thread.currentThread().getPriority(); System.out.println(priority); return "线程执行"; } public static void main(String[] args) throws ExecutionException, InterruptedException { //1种实现 FutureTask futureTask = new FutureTask<>(new CallableDemo()); new Thread(futureTask).start(); String s = futureTask.get(); System.out.println(s); //线程池的使用 ExecutorService executorService = Executors.newFixedThreadPool(2); Future> submit = executorService.submit(new CallableDemo()); Object o = submit.get(); System.out.println(o.toString()); executorService.shutdown(); } }
public class ThreadPool {
public static void main(String[] args) {
ExecutorService executorService = Executors.newCachedThreadPool();
ExecutorService executor = Executors.newFixedThreadPool(1);
ScheduledExecutorService s = Executors.newScheduledThreadPool(5);
for (int i = 0; i < 3;i++) {
s.schedule(()->
{System.out.println("123");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
},2, TimeUnit.SECONDS);
}
ExecutorService executorService1 = Executors.newSingleThreadExecutor();
for (int i = 0; i < 3;i++) {
executorService1.submit(()->
{System.out.println("99999");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
}
}
new ThreadPoolExecutor(); //这个可以私底下看线程池都要哪些参数 让后根据构造什么的进行设置 最好找个线程池工具类然后使用就完了 个人比较懒



