当前位置: 首页 > news >正文

面试知识储备-多线程

1.线程的概念

        线程使得在一个程序中可以同时执行多个任务。在 Java 应用程序中,多个线程可以同时运行,例如一个线程可以处理用户输入,另一个线程可以进行后台数据处理。

2.创建线程的方式

(1)重写thread类中的run方法,创建新的线程后使用start()方法中调用

(2)实现一个Runnable接口,在run方法中编写代码,使用时,实现了Runnable接口的对象传递给Thread类的构造函数

3.线程启动后不需要销毁

        当线程的任务执行完毕,即run()方法执行完成后,线程会自然进入死亡状态,此时会被垃圾回收器回收资源。

4.线程不一定要在启动类中使用

        可以在任一类中,比如订单服务类,同时处理发送通知邮件和更新库存等

5.线程池的概念

        线程池是一组预先创建好的线程,它们处于等待状态,随时准备执行任务。当有任务需要执行时,线程池中的一个线程会被分配来执行该任务。任务执行完成后,线程不会被销毁,而是返回线程池继续等待下一个任务。

6.线程池的优势

        ①可以复用线程,减少创建和销毁等耗时操作

        ②控制线程数量,避免资源竞争

        ③自动管理线程的生命周期,比如分配任务 ,回收线程等

7.创建线程池的方式

(1)创建固定大小的线程池:使用Executors.newFixedThreadPool(int nThreads)方法

   ExecutorService executorService = Executors.newFixedThreadPool(5);

(2)创建可缓存的线程池:使用Executors.newCachedThreadPool()方法,线程在 60 秒内没有被使用就会被回收。

(3)使用Executors.newSingleThreadExecutor()方法可以创建一个单线程的线程池

(4)ThreadPoolExecutor类直接创建一个自定义的线程池,灵活地控制线程池的参数,如核心线程数、最大线程数、线程空闲时间、任务队列等。

8.Lambda表达式的写法

        Lambda 表达式可以理解为一种简洁的匿名函数写法。它由参数列表、箭头符号 “->” 和方法体组成。比如() -> updateInventory(order)  ()代表无参 ,同时参数也不可以有默认值

   Thread thread1 = new Thread(() -> {ClientConnection client = connections.get(1);if (client!= null) {System.out.println("Processing request for client " + client.getClientId() + " by thread: thread1");}}, "thread1");thread1.start();Thread thread2 = new Thread(() -> {ClientConnection client = connections.get(2);if (client!= null) {System.out.println("Processing request for client " + client.getClientId() + " by thread: thread2");}}, "thread2");thread2.start();

http://www.lryc.cn/news/454194.html

相关文章:

  • 边缘计算插上AI的翅膀会咋样?
  • 脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO
  • 周报_2024/10/6
  • [深度学习][python]yolov11+bytetrack+pyqt5实现目标追踪
  • 如何使用ssm实现基于Web的穿戴搭配系统的设计与实现+vue
  • JavaScript的设计模式
  • CIKM 2024 | 时空数据(Spatial-temporal)论文总结
  • 计算机毕业设计 网上体育商城系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 【数据结构】什么是哈希表(散列表)?
  • 【优选算法】(第二十三篇)
  • Java.数据结构.HashSet
  • 关于懒惰学习与渴求学习的一份介绍
  • sed 环境配置
  • 黑神话:仙童,数据库自动反射魔法棒
  • 香江电器冲刺港交所上市:投资方提前撤资退出,因对赌协议而赔偿
  • SpringSecurity实现自定义登录接口
  • 深度解析:Tkinter 界面布局与优化技巧
  • RCE_无回显
  • 文心一言智能体——绿色生活管家
  • 无人机(自组穿越机,航模)-芯片选型
  • [Cocoa]_[初级]_[绘制文本如何设置断行效果]
  • IPS和IDS有啥区别
  • c基础面试题
  • 选择最佳HR系统_6款产品评测与推荐
  • Latex技巧——参考文献中加入url和doi
  • 安卓WPS Office v18.13.0高级版
  • 【C++力扣】917.仅仅反转字母|387.字符串中第一个唯一字符|415.字符串相加
  • RxSwift系列(四)异常处理和调试操作
  • Excel基础:电子表格Excel的使用技巧合集
  • 教育技术革新:SpringBoot在线教育系统开发