thinkphp只能做网站,怎么做网站滑动图片部分,网站怎么查看访问量,做网站产生的流量费怎么算1. Sychronized的锁升级过程是怎样的#xff1f; 2. Tomcat 中为什么要使用自定义类加载器#xff1f; 3. 说说对线程安全的理解 4. 对守护线程的理解 5. 并发、并行、串行之间的区别 6. Java死锁如何避免#xff1f; 7. 谈谈你对AQS的理解#xff0c;AQS如何实现可重入锁 2. Tomcat 中为什么要使用自定义类加载器 3. 说说对线程安全的理解 4. 对守护线程的理解 5. 并发、并行、串行之间的区别 6. Java死锁如何避免 7. 谈谈你对AQS的理解AQS如何实现可重入锁 8. 线程池的7个参数 9. 线程池中的核心属性ctl是什么 10. 线程池的执行流程 11. 线程池的拒绝策略有哪些
线程池的默认拒绝策略为AbortPolicy即丢弃任务并抛出RejectedExecutionException异常
当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时如果还有任务到来就会采取任务拒绝策略通常有以下四种策略
ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。ThreadPoolExecutor.DiscardPolicy丢弃任务但是不抛出异常。ThreadPoolExecutor.DiscardOldestPolicy丢弃队列最前面的任务然后重新提交被拒绝的任务ThreadPoolExecutor.CallerRunsPolicy由调用线程提交任务的线程处理该任务
12. 线程池为什么是先添加队列而不是先创建最大线程 13. 说说HashMap的put方法 14. 深拷贝和浅拷贝 15. Jdk1.7到Jdk1.8 HashMap发生了什么变化(底层)? 16. HashMap的扩容机制原理 17. 谈谈ConcurrentHashMap的扩容机制 18. ThreadLocal的底层原理和使用场景 两大使用场景
1.典型场景一每个线程需要一个独享的对象通常是工具类典型需要使用的类有SimpleDateFormat和Random
2.典型场景二每个线程内需要保存全局变量例如在拦截器中获取用户信息可以让不同方法直接使用避免参数传递的麻烦。
19. ReentrantLock中的公平锁和非公平锁的底层实现 20. ReentrantLock中tryLock()和lock()方法的区别 21. Sychronized的偏向锁、轻量级锁、重量级锁 22. 创建线程的几种方式
1 . 继承Thread类
实现Runnable接口 3. 实现Callable接口 4. 利用线程池来创建线程 23. 为什么不建议使用Executors来创建线程池 24. 线程池有哪几种状态每种状态分别表示什么 25. Sychronized和 ReentrantLock的区别 26. 线程池的几种实现
Java线程池类型有四种分别为newCachedThreadPool、newFixedThreadPool、newSingleThreadExecutor、newScheduleThreadPool。
1、newCachedThreadPool创建一个可缓存线程池如果线程池长度超过处理所需可灵活回收空闲线程若线程数不够则新建线程。
2、newFixedThreadPool创建一个固定大小的线程池。可控制并发的线程数量如果工作线程数量达到线程池初始的最大数则将提交的任务存入到池队列中。
3、newSingleThreadExecutor创建一个单线程的线程池即只创建唯一的工作者线程来执行任务保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
4、newScheduleThreadPool创建一个定长的线程池支持定时及周期性任务执行。
27. 线程池核心数与最大线程数设置
CPU密集型 可以理解为 就是处理繁杂算法的操作对硬盘等操作不是很频繁比如一个算法非常之复杂可能要处理半天而最终插入到数据库的时间很快。
IO密集型可以理解为简单的业务逻辑处理比如计算112但是要处理的数据很多每一条都要去插入数据库对数据库频繁操作。
核心线程
CPU密集型核心线程数CPU核心数(或 核心线程数CPU核心数1)。I/O密集型核心线程数2*CPU核心数或 核心线程数CPU核心数/1-阻塞系数))。
最大线程
CPU密集型应用最大线程设置为 N1。IO密集型经验应用最大线程设置为 2N1 (N为CPU数量下同)。