02 面试题系列 | 并发集合相关

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZBylant/article/details/88635090

2019-03-16 10-周三不加班

1、Java中的同步集合与并发集合有什么区别?

同步集合可以简单地理解为通过 synchronized 来实现同步的集合。不管是同步集合还是并发集合他们都支持线程安全,他们之间主要的区别体现在性能和可扩展性,二者都支持线程安全,区别主要体现在实现线程安全的方式,因此在性能和可扩展性上有明显不同!

  • 同步集合是把整个集合锁起来,所以性能较差;
  • 并发集合是通过锁剥离、COW等技术使得多个线程可以同时访问集合,所以性能很好。

2、Java中invokeAndWait 和 invokeLater有什么区别?

invokeAndWait:后面的程序必须等这个线程(参数中的线程)的东西执行完才能执行;
invokeLater:后面的程序和这个参数的线程对象可以并行,异步地执行;
invokeLater 一般用于在线程里修改 Swing 组件的外观,因为 Swing 组件是非同步的,所以不能在线程中直接修改,会不同步,得不到期望的效果,所以要把修改外观的代码放在一个单独的线程中,交给 invokeLater,这样后面的程序和这个参数的线程对象可以并行、异步地执行。

3、什么是FutureTask?

FutureTask 可以像 Runnable 一样,封装异步任务,然后提交给 Thread 或线程池执行,然后获取任务执行结果。原因在于 FutureTask 实现了 RunnableFuture 接口,RunnableFuture 是 Runnable 和 Callable 的结合,它继承自 Runnable 和 Callable。

猜你喜欢

转载自blog.csdn.net/ZBylant/article/details/88635090
今日推荐