面试宝典-java高级开发-多线程

一.多线程的优势: 多线程能带动cpu的处理效率,能使代码中的方法开启多个cpu运行,使运行速度更快。

二.多线程的三种实现方式:

    1.继承java.lang.Thread, 重写run()方法

    public class thisThread extends Thread {
          @Override
          public void run() {
                 System.out.println("这是一个多线程:"+Thread.currentThread().getId());
          }
    }

 

    2.实现Runnable接口,重写run()方法

    public class thisRunnable implements Runnable{
          @Override
          public void run() {
                 System.out.println("这是一个多线程:"+Thread.currentThread().getId());
          }
    }

 

   3.实现Callable接口

   public class thisRunnable implements Callable<T>{
          @Override
          public T void call() {
                 return null;
          }
    }

 

三.线程的几种状态

     新建(new),可运行(Runnable),运行(Running),阻塞(Blocked),死亡(DEAD)

 

四.线程池的创建方式

    1.newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程

      ExecutorService cachedThreadPool = Executors.newCachedThreadPool();

   2.newFixedThreadPool:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待

       ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);

   3.newScheduledThreadPool:创建一个定时线程池

       ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);

    4.newSingleThreadExecutor:创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行

       ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();

 

     但是以上线程基本不推荐使用了,推荐使用原生线程池:

       ExecutorService sellerInvoicePushExecutor = new ThreadPoolExecutor(20, 30, 50, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(102400));

     20:初始线程  30:最大线程数 50:超时时间 TimeUnit.SECONDS:超时单位为秒 new LinkedBlockingDeque:缓存线程数

 

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值