page contents
Nen
Nen - 程序员

性别: 天津 - 天津市 注册于 2021-06-23

向TA求助
2850金币数
43180 经验值
1个粉丝
主页被访问 6256 次

3096 个回答

0 赞同

synchronized 和 Lock 有什么区别?

相同点Lock 能完成 synchronized 所实现的所有功能; 不同点 Lock 有比 synchronized 更精确的线程语义和更好的性能; synchronized 会自动释放锁,而 Lock 一定要求程序员手工释放,并且必须在finally从句中释放; 通过 Lock 可以知道有没有成功获取锁,而 synchronized 却无法办到 Lock 还有更强大的功能,例如,它...

回答于 2022-04-14 14:34

0 赞同

synchronized 和 ReentrantLock 区别是什么?

synchronized 是和 if、else、for、while 一样的关键字,ReentrantLock 是类,这是二者的本质区别。既然 ReentrantLock 是类,那么它就提供了比synchronized 更多更灵活的特性,可以被继承、可以有方法、可以有各种各样的类变量 synchronized 早期的实现比较低效,对比 ReentrantLock,大多数场景性能都相差较大,但是在 J...

回答于 2022-04-14 14:33

0 赞同

如果你提交任务时,线程池队列已满,这时会发生什么?

如果使用的是无界队列 LinkedBlockingQueue,也就是无界队列的话,没关系,继续添加任务到阻塞队列中等待执行,因为 LinkedBlockingQueue 可以近乎认为是一个无穷大的队列,可以无限存放任务 如果使用的是有界队列比如 ArrayBlockingQueue,任务首先会被添加到ArrayBlockingQueue 中,ArrayBlockingQueue 满了,会根据maxi...

回答于 2022-04-13 15:32

0 赞同

什么是线程池?

线程池顾名思义就是事先创建若干个可执行的线程放入一个池(容器)中,需要的时候从池中获取线程不用自行创建,使用完毕不需要销毁线程而是放回池中,从而减少创建和销毁线程对象的开销。

回答于 2022-04-13 15:32

0 赞同

线程池有什么优点?

降低资源消耗;重用存在的线程,减少对象创建销毁的开销。 提高响应速度;可有效的控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性;线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳...

回答于 2022-04-13 15:32

0 赞同

什么是 Executor 框架?为什么使用 Executor 框架?

Executor 框架是一个根据一组执行策略调用,调度,执行和控制的异步任务的框架。 每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗时、耗资源的,而且无限制的创建线程会引起应用程序内存溢出。 所以创建一个线程池是个更好的的解决方案,因为可以限制线程的数量并且可以回收再利用这些线程。利用Ex...

回答于 2022-04-13 15:31

0 赞同

在 Java 中 Executor 和 Executors 的区别?

Executors 工具类的不同方法按照我们的需求创建了不同的线程池,来满足业务的需求。 Executor 接口对象能执行我们的线程任务。 ExecutorService 接口继承了 Executor 接口并进行了扩展,提供了更多的方法我们能获得任务执行的状态并且可以获取任务的返回值。 使用 ThreadPoolExecutor 可以创建自定义线程池。 Future 表...

回答于 2022-04-13 15:31

0 赞同

什么是线程组,为什么在 Java 中不推荐使用?

ThreadGroup 类,可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式。 线程组和线程池是两个不同的概念,他们的作用完全不同,前者是为了方便线程的管理,后者是为了管理线程的生命周期,复用线程,减少创建销毁线程的开销。 为什么不推荐使...

回答于 2022-04-13 15:31

0 赞同

应该如何创建一个线程池?

创建线程池的方式有多种,这里你只需要答 ThreadPoolExecutor 即可。 ThreadPoolExecutor() 是最原始的线程池创建,也是阿里巴巴 Java 开发手册中明确规范的创建线程池的方式。

回答于 2022-04-13 15:30

0 赞同

什么是阻塞式方法?

阻塞式方法是指程序会一直等待该方法完成期间不做其他事情,ServerSocket 的accept()方法就是一直等待客户端连接。这里的阻塞是指调用结果返回之前,当前线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在任务完成前就返回。

回答于 2022-04-12 14:26