关于线程常问面试题

1.创建线程有几种方式

        继承Thread类,重写run方法,用start开启线程

        实现Runable接口,通过thread调start方法

        实现Callable接口,有返回值通过futrueTask进行封装

2.Synchronized 和 lock的区别

        1.lock的加锁和解锁是由java代码实现的,Synchronized 是由JVM管理

        2.Synchronized 能锁方法、类、代码块,lock只能在范围块

        3.lock能提高多个线程读操作效率

3.Synchronized 锁升级原理

        在jdk1.6之前由监视器锁(monitor) 实现加锁释放

        在1.6之后进行升级,由偏向锁的无锁到轻量级锁CAS自旋锁,进行加锁如果自旋10次后会变成重量级锁

4.线程的生命周期&几种状态

        新键——就绪——阻塞——运行——死亡

5.sleep 和 wait的区别

        sleep是Thread类的方法,wait是Object的方法

        sleep休眠时不会释放锁,wait在等待时要释放锁

        sleep在任何地方可以使用,wait只能在同步代码块使用

  6.Synchronized 和 volatitle 关键字的区别

         Synchronized 是线程同步的重量级实现,volatitle 的轻量级实现

        Synchronized 可以修饰代码块和方法,volatitle 只能修饰变量

        volatitle 只能保证数据的可见性不能保证原子性,Synchronized 两者都可以保证

   7.线程池的7大参数

        corepoolsize:核心线程,不会被销毁

        MaximumPoolSize :最大线程数,非核心线程数用完之后会销毁

        KeepAliveTime :非核心线程

        Unit :空闲时间单位

        WorkQueue :阻塞队列,超过核心线程数时会进行排队

        ThreadFactory :创建新线程

        Handler :拒绝策略

线程池执行流程 :首先进入看线程池的线程数小于核心线程数,新创建一个任务执行,当核心线程数用完时会进入阻塞队列,阻塞队列也满时进入拒绝策略

        

        

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值