JAVA面试笔试之-java 多线程

 1.串行与并发;进程和线程
          串行:当有多个任务需要执行的时候,多个任务之间是按照一定的顺序执行的。
          并发:多个任务同时执行。
          程序中串行和并发是同时存在的。
          
                 进程和线程都是为了实现并发而存在的,

                    

2.创建线程的方式及实现

4.说说 CountDownLatch、CyclicBarrier 原理和区别
     java 同时启动多个线程

7.ThreadLocal 原理分析,ThreadLocal为什么会出现OOM,出现的深层次原理
      ThreadLocal 用来保存线程独享的数据

8.讲讲线程池的实现原理

9.线程池的几种实现方式
     继承Tread

10.线程的生命周期,状态是如何转移的  可参考:《Java多线程编程核心技术》

11.说说线程安全问题,什么是线程安全,如何保证线程安全

12.线程安全
       就是多线程访问同一代码,不会产生不确定结果。(比如死锁) 
  
13.如何避免死锁        
       1.  控制加锁的顺序
       2.设置加锁超时时间
       

 14.使用synchronized同步代码块,或者用Lock锁 
  
 15.多线程并发情况下,线程共享的变量改为方法局部级变量

16.产生死锁的四个条件(互斥、请求与保持、不剥夺、循环等待)
     两个或两个以上的线程,同时访问相同的资源,互相持有对方需要访问的实例,处于互相等待对方释放的状态下会发生死锁。

17.如何检查死锁(通过jConsole检查死锁)

19.volatile 实现原理(禁止指令重排、刷新内存)

20.synchronized 实现原理(对象监视器)

21.synchronized 与 lock 的区别
    synchronized 是一个关键字,会自动释放锁
    lock是一个类,它提供了更多的方法,可以处理一些异常情况,比如说设定加锁超时时间,读取文件不冲突情况下可以一异步,而写文件时加锁同步。
    需要主动去释放锁,不然会出现死锁

27.Java 8并法包下常见的并发类 

  28.设计5个线程,让这5个线程同时启动, 说一下思路

  29.设计4个线程,两个线程向集合A中添加数据,另外两个线程从集合A中移除数据,手写代码( 遇到两次笔试 )
  
  30.讲讲ThreadLocal的实现原理;作为变量的线程隔离方式,其内部是和做的?
  
  31.讲讲独占锁ReetrantLock 原理
  
  32.读写锁 ReetrantReadWriteLock原理?
  
  
  
  
  
  
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章