java线程池

java线程池,第1张

java线程池 网上大多数都是thread和Runnable,这里是Callable的使用

面试官有问题就是想要有返回值的线程怎么办

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();
//这个可以私底下看线程池都要哪些参数 让后根据构造什么的进行设置  最好找个线程池工具类然后使用就完了  个人比较懒

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5716175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存