建设银行网站怎么先无贷款呢,电脑行业网站模板,江西网站建设优化服务,汕头seo1、ArrayList和linkedList的区别
它们都是继承自 Collection。
ArrayList 是基于数组的#xff0c;在使用查询的时候效率比较高#xff0c;但删除效率却非常低#xff0c;因为它需要重新排数组中的所有数据。
LinkList底层是一个双链表#xff0c;在添加和删除元素时更好…1、ArrayList和linkedList的区别
它们都是继承自 Collection。
ArrayList 是基于数组的在使用查询的时候效率比较高但删除效率却非常低因为它需要重新排数组中的所有数据。
LinkList底层是一个双链表在添加和删除元素时更好的性能但查询效率却非常低。
2、try catch finallytry里有returnfinally还执行么?
首先不管有没有异常finally模块肯定会执行的哪怕 try 里有 return也是一样。
还有就是finally中最好不要包含return否则程序会提前退出返回值不是try或catch中保存的返回值。
3、能简单的介绍下多路复用 IO 模型吗
多路复用 IO 模型其实就是NIO在这个模型中它会有一个线程不断的去轮询socket的状态如果socket发生真正的读写事件时才会真正的调用实际上的读写操作。
它的优势就在于在该模型下只需要一个线程就可以管理多个socket的状态。系统不需要再额外建立或者去管理多个线程极度节省了系统线程资源。
成于轮询败于轮询它是对到达的事件进行逐一响应所以一旦如果事件响应体较大就会导致后续的事件迟迟得不到响应会影响功能上的进度。
4、MQ如何避免消息重复投递或重复消费
首先在消息生产的时候在MQ的内部会针对生产者生产的消息生成一个唯一ID作为去重条件可以避免消息重复进入队列里。
然后在消费时必须要求消息体中有一个消费ID作为消息消费的去重依据防止同一条消息重复消费。
5、消息队列满了以后该怎么处理?
首先消息队列的延时或者过期失效会导致消息不断积压。
首先肯定需要临时紧急扩容然后再恢复consumer的问题先确保恢复消费者的消费速度然后再将现有的consumer都停掉。
第二步新建一个topicpartitionqueue数量大小是原先的10倍。然后再手写一个临时分发数据的consumer消费者程序部署到项目中去代替停掉的消费者程序。
接着再征用10倍的机器来部署consuemr消费者程序这种做法就是临时将消费者扩大了10倍以之前正常速度的10倍来消耗。
6、如何停止一个正在运行的线程
大家首先想到的肯定是调用 stop 方法强制终止。但是不推荐这个方法因为这个方法在API里是过期作废的方法。
那么除了stop还可以使用退出标志使线程run方法完成后正常退出。
还可以使用interrupt方法中断线程。
class InterruptThreadDemo3 {
public static void main(String[] args) throws InterruptedException {MyThread m1 new MyThread();System.out.println(Starting thread...);m1.start();Thread.sleep(3000);System.out.println(Interrupt thread...: m1.getName());m1.stop true; // 设置共享变量为truem1.interrupt(); // 阻塞时退出阻塞状态Thread.sleep(3000); // 主线程休眠3秒以便观察线程m1的中断情况 System.out.println(Stopping application...);}
}
7、sleep()和wait() 有什么区别?
sleep()方法属于Thread类中的方法而wait()方法属于Object类方法。sleep()方法不会释放对象的锁它只是暂时让出CPU资源给其他线程时间到了会自动恢复运行。wait()方法会释放对象的锁会重新进入到对象等待池中重新竞争锁资源需要使用notify才能唤醒。