JUC面试题

JUC面试题

  • 并行和并发的区别?线程和进程的区别?

  • 线程的有几种状态?线程的创建方式有哪几种?

  • 线程池的有几种状态?线程池的创建方式有哪几种?

  • sleep()方法和wait()方法的区别

  • notify()和notifyAll()的区别

  • 线程run()方法和start()方法的区别

  • 为什么阿里巴巴规范不推荐用JDK自带的Executors创建线程池?那该这么创建线程池?

​ -- 通过ThreadPoolExcutor的构造方法指定参数

​ 追问: 那么有哪几种参数?能不能讲讲线程池的工作原理?拒绝策略又有哪几种?拒绝策略使用场景?

  • 怎么保证多线程的安全?

​ -- 原子性、可见性、有序性

​ 你肯定想到了加锁,那么synchronized必考

  • sychronized在哪些地方使用?同步方法和同步代码块的区别?

  • sychronized和volatitle有什么区别?

  • sychronized锁有哪些状态?那么synchronized是什么锁?

  • 什么是悲观锁? 什么是乐观锁?乐观锁通过什么实现? --CAS

  • 说说什么是CAS?

  • 能不能说说synchronized的底层原理?锁怎么优化?

  • ReentrantLock是什么锁?【可重入锁、乐观锁】

  • reetrantlock原理?

JUC解题

并发和并行,线程和进程

并发-->高并发-->火车抢票,商品抢购-->多个线程抢占同一资源

并行-->多事件同时发生【同一时刻】

线程-->程序执行、CPU调度的最小单位

进程-->一个进程有多个线程组成,比如QQ,谷歌浏览器等,各个进程相互独立

线程有几种状态?创建线程有几种方式?

NEW:新建状态
RUNNABLE:就绪状态
BLOCKED:阻塞状态
WAITING:等待状态
TIMED_WAITING:有限等待状态
TERMINATED:死亡状态

继承Thread类、实现Runnable接口作为对象、实现Callable接口使用FutureTask包装、使用线程池创建

线程池有几种状态?创建线程池有几种方式?

线程池的5种状态:Running、ShutDown、Stop、Tidying、Terminated

使用jdk自带的Executors工具类,可以创建

固定大小的线程池(newFixedThreadPool)、

单线程的线程池(newSingleThreadExecutor)、

可扩容的线程池(newCachedThreadPool())、

可定时的线程池(newScheduledThreadPool)

阿里巴巴规范推荐用什么创建线程池

ThreadPoolExcutor的构造方法指定参数

有7种参数,核心线程数、最大线程数、时间、时间单位、阻塞队列、创建线程工厂、拒绝策略

有4种拒绝策略,AbortPolicy(默认)抛出异常,CallerRunsPolicy将任务返回给调用者,DiscardOldestPolicy抛弃阻塞队列等待最久的任务,DiscardPolicy抛弃无法处理的任务

sychronized在哪些地方使用?

修饰代码块,修饰普通方法,修饰静态方法,修饰类

锁的几种状态?synchronized是什么锁

无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态

synchronized是可重入锁、悲观锁、重量级锁

什么是可重入锁? 可重复可递归调用的锁,外层加锁后内层仍然可使用,并且不会发生死锁

锁升级
在锁对象的对象头有个字段threadid默认为空,当第一次有线程访问时将threadid设为当前线程id,这就是偏向锁,当线程执行结束重新将threadid设为空,然后又有线程进入时,会判断threadid是否和当前线程id一样,一样就获取该对象否则就会发生锁升级,从偏向锁升级到轻量级锁,轻量级锁是通过自旋循环方式获取锁,如果执行一定次数没有获取到锁就会升级到重量级锁。通过这种锁升级就能减少性能损耗。

synchronized的底层原理?

synchronized支持的同步方法和同步语句都是使用monitor来实现的。每个对象都与一个monitor相关联,当一个线程执行到一个monitor监视下的代码块中的第一个指令时,该线程必须在引用的对象上获得一个锁,这个锁是monitor实现的。

ReentrantLock是什么锁?ReentrantLock的底层原理

可重入锁、乐观锁

通过CAS+AQS队列来实现,CAS就是比较并替换,仅当旧的预期值A和内存地址V的值相同时,才能将A修改为成修改值B,AQS是一个用于构建锁和同步容器的框架,使用一个FIFO的队列

全部评论

相关推荐

04-03 11:37
武汉大学 Java
高斯林的信徒:武大简历挂?我勒个骚岗
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务