2021
10-01
10-01
每日六道java新手入门面试题,通往自由的道路--线程池
目录1.你知道线程池吗?为什么需要使用线程池?小结:2.你知道有多少种创建线程池的方式3.线程池的五种状态你有了解吗?4.你知道ThreadPoolExecutor的构造方法和参数吗5.你可以说下线程池的执行过程原理吗6.能否写一个简单线程池的demo?总结1.你知道线程池吗?为什么需要使用线程池?在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。而在Java中,JVM中每创建和销毁线程...
继续阅读 >
目录1.你可以讲下进程与线程的区别?为什么要用多线程?2.什么是上下文切换?3.说说你知道的几种创建线程的方式4.昨天你讲到创建线程后使用start方法去调用线程,为什么run方法不行呢?有什么区别?5.你知道你开启一个线程后,它的状态有那些吗?6.既然讲到超时方法,那你讲下sleep和wait的区别和他们需要怎样唤醒总结:1.你可以讲下进程与线程的区别?为什么要用多线程?进程:进程是程序的一次执行过程,是系统运行...
前言Java5在concurrency包中引入了java.util.concurrent.Callable接口,它和Runnable接口很相似,但它可以返回一个对象或者抛出一个异常。Callable接口使用泛型去定义它的返回类型。Executors类提供了一些有用的方法在线程池中执行Callable内的任务。由于Callable任务是并行的,我们必须等待它返回的结果。而线程是属于异步计算模型,所以不可能直接从别的线程中得到函数返回值。java.util.concurrent.Future对象为我们解决了这...
目录1.JVM是如何判断对象是否可回收2.你知道有什么垃圾回收的常见算法吗?3.你知道有什么垃圾收集器吗?4.那你知道什么时候才会触发FullGC5.JVM中四种引用你有了解过吗?6.说说你知道的几种主要的JVM参数1.堆设置2.收集器设置3.并行收集器设置4.并发收集器设置5.JVM调优的参数总结1.JVM是如何判断对象是否可回收垃圾收集器在做垃圾回收的时候,首先需要判断一个对象是存活状态还是死亡状态,死亡的对象将会被标识为垃圾数...
为什么要使用Lambda?可以对一个接口进行非常简洁的实现。Lambda对接口的要求?接口中定义的抽象方法有且只有一个才可以。传统实现一个接口需要这样做:方法一://实现接口,同时必须重写接口中抽象方法classTestimplementsIntrfacefN{@OverridepublicvoidgetUser(inta,intb){}}//@FunctionalInterface注解意思:函数式接口,用来做规范,有这个注解,说明此接口有且只有一个抽象方法!!!@FunctionalI...
目录1.你可以讲下你对String类有什么其他的了解吗?2.==和equals的区别3.Strings=newString(“nz”)创建了几个字符串对象?4.你可以讲下JVM的运行时数据区或者说内存结构吗?5.类加载过程6.而其中类加载器是什么,那有哪些呢?总结1.你可以讲下你对String类有什么其他的了解吗?在看String的源码过程中,可以发现String内部实际存储结构为char数组,在String中有几个比较重要的构造函数://默认的无参构造pub...
为什么ReentrantReadWriteLock不能锁升级在ReentrantReadWriteLock中,锁是不可以升级的,只能降级。也就是如果当前线程持有了ReadLock,那么就不能再获取WriteLock,但是,如果当前线程持有了WriteLock,可以直接获取ReadLock下面用代码尝试一下:Loggerlogger=LoggerFactory.getLogger(this.getClass());ReentrantReadWriteLockreentrantReadWriteLock=newReentrantReadWriteLock();ReentrantReadWriteLock.ReadLockread...
使用场景由于公司业务需求,需要对接socket、MQTT等消息队列。众所周知socket是双向通信,socket的回复是人为定义的,客户端推送消息给服务端,服务端的回复是两条线。无法像http请求有回复。下发指令给硬件时,需要校验此次数据下发是否成功。用户体验而言,点击按钮就要知道此次的下发成功或失败。如上图模型,第一种方案使用Tread.sleep优点:占用资源小,放弃当前cpu资源缺点:回复速度快,休眠时间过长,仍然需要等待休眠结...
FastJson的使用使用maven导入依赖包<!--下边依赖跟aop没关系,只是项目中用到了JSONObject,所以引入fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.70</version></dependency>常用方法:1.JSON.toJSONString(obejct)-java对象转JSON字符串,注意:默认情况下,如果int类型和boolean类型的属性没赋值的时候 (publicbooleana;publicintb;),调用J...
JavaHashSetHashSet基于HashMap来实现的,是一个不允许有重复元素的集合。HashSet允许有null值。HashSet是无序的,即不会记录插入的顺序。HashSet不是线程安全的,如果多个线程尝试同时修改HashSet,则最终结果是不确定的。您必须在多线程访问时显式同步对HashSet的并发访问。HashSet实现了Set接口。HashSet中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。添加元素HashSet类提供类很多有用的方...