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

Java 线程池的原理与实现

最近在学习线程池、内存控制等关于提高程序运行性能方面的编程技术,线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步控制等等。
一提到池,我们会想到数据库连接池,但是线程池又如何呢?


建议:在阅读本文前,先理一理同步的知识,特别是syncronized同步关键字的用法。
关于我对同步的认识,要缘于大三年的一本书,书名好像是 Java 实战,这本书写得实在太妙了,真正的从理论到实践,从截图分析到.class字节码分析。哇,我想市场上很难买到这么精致的书了。作为一个Java爱好者,我觉得绝对值得一读。
我对此书印象最深之一的就是:equal()方法,由浅入深,经典!
还有就是同步了,其中提到了我的几个编程误区,以前如何使用同步提高性能等等,通过学习,使我对同步的认识进一步加深。

简单介绍

    创建线程有两种方式:继承Thread或实现RunnableThread实现了Runnable接口,提供了一个空的run()方法,所以不论是继承Thread还是实现Runnable,都要有自己的run()方法。
    一个线程创建后就存在,调用start()方法就开始运行(执行run()方法),调用wait进入等待或调用sleep进入休眠期,顺利运行完毕或休眠被中断或运行过程中出现异常而退出。

waitsleep比较:
      sleep方法有:sleep(long millis)sleep(long millis, long nanos),调用sleep方法后,当前线程进入休眠期,暂停执行,但该线程继续拥有监视资源的所有权。到达休眠时间后线程将继续执行,直到完成。若在休眠期另一线程中断该线程,则该线程退出。
      wait方法有:wait()wait(long timeout)wait(long timeout, long nanos),调用

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

相关文章:

  • 【idea】点击idea启动没反应
  • C# Atrribute和反射的简单例子
  • ASP.NET Core - 缓存之分布式缓存
  • 代理模式(C++)
  • C# 有效的字母异位词
  • R语言安装包Seurat
  • vue2中使用mixins(混入)和vue3中使用composable
  • 通过OpenTelemetry上报Python-flask应用数据(阿里云)
  • 使用node搭建服务器,前端自己写接口,将vue或react打包后生成的dist目录在本地运行
  • 一篇文章搞懂如何使用JDBC操作数据库,还有JDBC进阶操作
  • 9.3.2.1网络原理(UDP)
  • 21、stm32使用LTDC驱动LCD
  • 合并两个有序链表
  • 深入了解Unity的Physics类:一份详细的技术指南(七)(上篇)
  • 数据结构与算法-数组(附阿里面试题)
  • k8s集群网络插件搭建——————解决集群notready(k8s1.20版本,docker24)
  • 有血有肉的PPT
  • 使用C语言实现UDP消息接收
  • 图片加水印
  • Nginx代理接口访问返回404
  • 湘大 XTU OJ 1097 排序 题解:c++ 函数库的使用 快速排序 归并排序 冒泡排序
  • Stable Diffusion AI绘图教学
  • 39、传输层的任务和协议
  • 系统架构设计专业技能 · 网络规划与设计(三)【系统架构设计师】
  • 使用Matplotlib判断鼠标是否点击在当前线上的详细指南
  • http get、post、put
  • 仅使用 CSS 创建打字机动画效果
  • pytest fixture 高级使用
  • 远程控制医疗行业应用解析:如何满足医院合规需求?
  • 【C++】开源:glog日志库配置使用