26. ThreadPool用法与优势。
ThreadPool是java.util.concurrent包下,提供一系列与线程相关的类。
1.降低资源消耗:通过重复利用已经创建的线程就爱你各地线程创建和销毁造成的消耗
2.提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行
3.提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配、调优和监控
线程池可以应对突然大并发访问量,通过有限个固定线程为大量的操作提供服务,减少创建和销毁线程所消耗的系统资源。
27. Concurrent包里的其他东西:ArrayBlockingQueue、CountDownLatch等等。
CountDownLatch是一个同步工具类,它允许一个或者多个线程一直等待,知道其它线程的操作执行完毕后在执行。
1.CountDownLatch是什么:
CountDownLatch是java1.5中引入的,与他一起被引入的并发工具包还有CyclicBarrier,Semaphore,ConcurrentHashMap和BlockingQueue,他们都存在于java.util.concurrent包下,CountDownLatch类能够使一个线程等待完成各自的工作后在执行。例如:程序的主线程希望在负责启动框架服务的线程启动完成后执行。
CountDownLatch是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程完成自己任务后,计数器的值就-1。当计数器的值为0时,他表示所有的线程已经完成了任务,然后在闭锁上等待的先策划那个就可以回复执行任务。
step1.主线程启动,创建CountDownLatch的初始值N
step2.创建并启动N个线程
step3.主线程等待N个完成,每完成一个N-1,主线程任务其它线程全部完成,启动执行。
CountDownLatch类中定义的构造函数:
public CountDownLatch(int count){...}
构造器中计数值count就是闭锁需要等待的线程数量。主线程必须在启动其它线程后立即调用CountDownLatch.await(),该主线程就会在该方法上阻塞,知道其它线程完成各自任务。
其他N个对象必须引用闭锁对象,因为他们需要通知CountDownLatch对象,他们已经万册和凝固了自己的任务。这种通知机制是通过CountDownLatch.countDown()方法完成;每条用依次这个方法,在构造器函数中初始化的count值就会-1,直到count为0,至县城就能通过await()恢复执行自己的任务。
场景:
1.实现最大的并行性。
2.开始执行前等待N个线程完成各自任务
3.思索检测。
ArrayBlockingQueue阻塞队列,见生产者消费者模式中的队列存储,它能够自动等待阻塞。
28. wait()和sleep()的区别。
1.wait()是Object方法,所有的java类都直接或者间接继承了该方法。sleep()是Thread类中的静态方法。
2.wait()被调用时候,线程会释放对象锁,进入等待该对象的等待锁定池,只有针对该对象的唤醒方法notify()被调用后,本线程才进入对象锁定池准备重新获取对象锁,重新运行。
而sleep()不同,它是直接调用Thread.sleep(10),是让当前程序被打断暂停执行指定的时间,让出CPU该其他线程使用,但是监控状态仍然保持监听,当指定的时间到了又会自动恢复运行状态,对象锁不会被释放。
29. foreach与正常for循环效率对比。
循环数字数组时,for需要首先count数组长度,引入自增长变量,循环条件判断和自增长,输出数组时候还需要用哈希值
foreach循环数组,指针会自动指向下一个元素,不需要计算数组长度,没有条件判断和自增长变量,元素也不需要用哈希值,性能比for和while好。
数组循环用foreach,知道循环次数用for,条件循环用while,遍历数组用foreach。
相关推荐
"Core Java Interview Questions"这个资源集锦了面试中可能会遇到的一些关键问题,旨在帮助求职者更好地准备Java核心技术的面试。以下是根据描述和标签提炼出的一些核心Java知识点: 1. **Java基础** - 类与对象:...
Core Java Interview Question Page 1
从国外网站上下载的Java面试题。可以看看国外公司的Java面试常用题,以及如何用英文回答。
这本书名为《Core Java Interview》,其内容是关于Java面试的,英文版本,是一本适合想要面试Java职位的求职者的实用指南。它由Sam Atkinson撰写,并在Leanpub网站上出售,于2016年5月21日发布。Leanpub是一种轻量级...
CoreJava全套详细笔记资料.pdf CoreJava是Java编程语言的核心部分,涵盖了Java语言的基础知识和高级应用。以下是对给定文件的详细解读和知识点总结: 一、原码、反码、补码 * 原码是指一个数的二进制表示形式,...
【Core Java】是Java编程的基础教程,主要涵盖了Java语言的核心概念和使用方法。在学习Core Java时,首先要理解以下几个关键知识点: 1. **类与对象**:类是面向对象编程的基础,是描述某一类事物共性的抽象,而...
Java.Interview.Guide.How.to.Build.Confidence.With.a.Solid.Understanding.of.Core.Java.Principles.B015HF9SJQ.pdf Java.Interview.Guide.How.to.Build.Confidence.With.a.Solid.Understanding.of.Core.Java....
CoreJava是Java的基础,涵盖了Java Standard Edition (J2SE)的主要内容,包括基本语法、面向对象编程(OO)原则、核心类库的使用等。在学习CoreJava时,我们需要掌握以下几个关键知识点: 1. **编程思想**: - ...
Java 核心技术 第八版-第1和2卷+源代码【Core Java 8th Edition】内附资源: Core Java. Volume I. Fundamentals, 8th Edition.pdf ; Core Java. Volume II. Advanced Features, 8th Edition.chm ; Core Java 8th ...
CoreJava DAY01 Java概述 1 CoreJava DAY02 数据类型和控制结构 6 CoreJava DAY03 数组 11 CoreJava DAY04 15 CoreJava DAY05 面向对象 17 CoreJava DAY06 类的加载过程、实例化、继承、多态 20 CoreJava DAY07修饰...
【标题】:“Core Java,Java核心编程” 【描述】:“Java语法基础,Java面向对象编程,图形用户界面(GUI)编程,Java网络编程:Socket编程” 【标签】:“corejava” 在计算机编程领域,Core Java是指Java的...
Interview Questions in Core Java 1.what is a transient variable? A transient variable is a variable that may not be serialized.
《Core Java.JAVA核心技术(中文版)》是学习Java编程的重要参考资料,主要涵盖了Java语言的基础以及进阶知识。这本书深入浅出地讲解了Java的核心概念和技术,为读者提供了全面而细致的学习路径。以下是对该书内容的...
《Core Java》是由Sun Microsystems公司出版的一本权威的Java编程教材,它全面深入地介绍了Java语言的核心概念和技术。这本书是Java开发者的重要参考资料,对于初学者和有经验的开发者都具有很高的学习价值。以下是...
Core Java for the Impatient 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Core Java 学习必备PPT(CoreJava教案)
CoreJava DAY01 Java概述 1 CoreJava DAY02 数据类型和控制结构 10 CoreJava DAY03 数组 20 CoreJava DAY04 27 CoreJava DAY05 面向对象 31 CoreJava DAY06 类的加载过程、实例化、继承、多态 37 CoreJava DAY07修饰...
《Core Java 1&2》是Java编程领域中两本非常经典的教材,分别对应于卷1和卷2,英文版提供了全面且深入的Java学习资源。这两本书由Cay S. Horstmann和Gary Cornell撰写,是许多程序员入门和进阶Java技术的重要参考书...