Java异步任务 线程详解(1)

Java异步任务 线程详解(1)


废话不多说,直接上代码。

1.创建线程的四种方式

写main方法

public static void main(String[] args) throws ExecutionException, InterruptedException {
         System.out.println("main......start.....");
         Thread thread = new Thread01();
         thread.start();
         System.out.println("main......end.....");
    }
  1. 继承Thread
 public static class Thread01 extends Thread {
        @Override
        public void run() {
            System.out.println("当前线程:" + Thread.currentThread().getId());
            int i = 10 / 2;
            System.out.println("运行结果:" + i);
        }
    }
  1. 实现Runnable接口
public static class Runable01 implements Runnable {
        @Override
        public void run() {
            System.out.println("当前线程:" + Thread.currentThread().getId());
            int i = 10 / 2;
            System.out.println("运行结果:" + i);
        }
    }
  1. 实现Callable接口
public static class Callable01 implements Callable<Integer> {
        @Override
        public Integer call() throws Exception {
            System.out.println("当前线程:" + Thread.currentThread().getId());
            int i = 10 / 2;
            System.out.println("运行结果:" + i);
            return i;
        }
    }

通过FutureTask来开启线程

         FutureTask<Integer> futureTask = new FutureTask<>(new Callable01());
         new Thread(futureTask).start();
         System.out.println(futureTask.get());
  1. 线程池
//线程池,每个系统应该有一个共有的有一个或者是有两个
    public static ExecutorService executor = Executors.newFixedThreadPool(10);
ExecutorService service = Executors.newFixedThreadPool(10);
         service.execute(new Runable01());
         Future<Integer> submit = service.submit(new Callable01());
         submit.get();

service.submit可以得到返回值,而service.execute不能得到返回值

2.四种方法对比

  • 1,2种方法不能得到返回值,第三种方法可以得到线程执行的返回值
  • 1,2,3都不能控制资源,会导致服务器资源耗尽,服务器崩溃
  • 第四种方法可以控制资源,而且性能稳定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值