多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

java多线程面试题总结

java多线程面试题总结 文章目录1,线程和进程的区别2,创建线程的几种方式3,线程的执行的几种状态4,同步代码块和同步方法的区别5,监视器内部是如何线程同步的?程序应该做哪种级别的同步?6,什么是死锁(deadlock)?7,如何保证N个线程可以访问N个资源同时又不导致死锁?8 start() 和run()方法的区别9 Runnable接口和callable接口的区别,及callable获取结果的方式,futureTask10,cyclicBarrier和countdownlatch的区别11 java 内存模型,线程安全问题和volatile 关键字的作用11 java 原子操作11 volatile为何不保证原子性? volatile单利模式使用volatile单利模式是使用11 java并行编程的三大特性,可见性,原子性,有序性12 什么是线程安全13 线程安全的级别14 java 如何获取线程dump文件15 一个线程如果出现了运行时异常会怎么样?16 如何在两个线程间共享数据17 sleep 和wait方法的区别18 生产者消费者模型的作用是什么?19 Threadlocal的作用20 为什么 wait方法和notify、notifyAll方法要在同步块中调用?21 wait方法和notify、notifyAll方法在放弃对象监视器时有什么区别22 为什么要使用线程池23 怎么检测一个线程是否持有对象监视器24 synchronize和reentrantlock的区别25 cuoncurrentHashMap的并发度是什么26 ReadWriteLock是什么?27 什么是多线程的上下文切换28 如果提交任务时,线程池队列已满,会发什么什么?29 java的线程调度算法是什么?30 Thread.sleep(0)的作用31 什么是自旋32 什么是CAS33 什么是乐观锁,悲观锁34 简单说下什么是AQS35 semaphore有什么作用36 什么是公平锁,什么是非公平锁,synchronize属于哪种?什么是可重入锁37 synchronized与static synchronized 的区别38 hashtable 的size()方法只有一个return count,为什么还要做同步39 线程类的构造对象,静态代码块被哪个线程调用?40 锁粗化操作41 线程池中的闲置线程是怎么存活等待的?占内存吗?42 高并发,任务执行短的业务怎么设置线程个数?并发不高,任务执行长的业务怎么使用线程池?并发高,执行任务长的业务怎么设置线程个数?43 java 线程池体系介绍44 queen的三种排队策略45 线程池的拒绝策略55 synchronized锁的原理,和可重入原理56 synchronized和reentrantlock的区别57 Reentrantlock锁的可重入性原理是?58 线程池非核心线程的创建时机?59 如何在java线程池中提交线程60 CopyOnWriteArrayList是线程安全的1,线程和进程的区别进程是应用程序,线程是进程中的一个执行序列,一个进程可以有多个线程。像java的jvm就是一个进程,里面的thread就是一个个线程。2,创建线程的几种方式继承Thread类,实现Runnable接口或callable接口,用Executor创建线程池Runnable相对更受欢迎一些,因为它是接口,类可以实现多个接口。但只能继承一个。3,线程的执行的几种状态1,新建(new),创建一个线程对象2,可运行状态(runnable):调用start()方法,但不会立即执行,而是在可运行线程池中等待调度运行。3,运行(running):线程获得了cup的时间片,开始执行代码4,阻塞(block):线程因某种原因放弃了执行权,让出cpu资源,停止运行。阻塞又可细分为以下几种:等待阻塞,线程执行了wait()方法,进入到了等待队列。同步阻塞,如果线程执行中遇到有同步锁被别的线程持有,则jvm会把该线程放到锁池中。其他阻塞,线程遇到sleep或join方法,jvm也会把线程置为阻塞状态。当阻塞结束,就由进入2,可运行状态5,死亡(dead):线程run(),main()方法执行结束或有异常退出了,则该线程死亡,生命周期结束。4,同步代码块和同步方法的区别前者的颗粒度更细一点。5,监视器内部是如何线程同步的?程序应该做哪种级
返回列表