Java语音从开始就内置了对多线程的支持,线程是操作系统的最小单元,多个线程同时执行可以明显提升程序性能。但是过多的创建线程以及不正当的管理线程也容易造成问题。所以,认识并合理使用线程变成提升编码能力的必要途径。

什么是线程
操作系统在运行一个程序时,会为其创建一个进程。例如:启动一个Java程序,系统会创建一个Java进程。上文提到操作系统的最小调度单元是线程,线程也被称为***轻量级进程***,一个进程可以创建多个线程。这些线程都有各自的计数器、堆栈以及局部变量等属性,而且还能访问共享的内存变量。处理器在这些线程中高速切换,让我们感觉是多个线程同时执行。

举个例子吧,一个Java程序,从最开始的mian()方法开始执行,然后按照既定的逻辑执行,看似没有其它的线程参与,但是吧,Java程序本身就是一个多线程的程序。所以。。。

public class MultiThread{public static void main(String[] args) {// 获取Java线程管理MXBeanThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();// 不需要获取同步的monitor和synchronizer信息,仅获取线程和线程堆栈信息ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false, false);// 遍历线程信息,仅打印线程ID和线程名称信息for (ThreadInfo threadInfo : threadInfos) {System.out.println("[" + threadInfo.getThreadId() + "] " + threadInfo.getThreadName());}}
}

从以上代码可以看出来,Java程序执行,是main线程和多个其它线程同时运行。

为什么使用多线程
执行一个*“Hello World”*,却启动了那么多无关的线程,是不是意味着把简单的问题复杂化了?当然不是,正确使用多线程,可以带来很多好处哦。使用多线程的原因,有以下几点

  • 更多的处理器核心
  • 更快的响应时间
  • 更好的编程模型

作者:https://gper.club/articles/7e7e7f7ff7g5agc8g6d

Java并发编程基础相关推荐

  1. Java并发编程基础--ThreadLocal

    Java并发编程基础之ThreadLocal ​ ThreadLocal是一个线程变量,但本质上是一个以ThreadLocal对象为键.任意对象为值的存储结构,这个结构依附在线程上,线程可以根据一个T ...

  2. Java并发编程的艺术-Java并发编程基础

    第4章 Java并发编程基础 ​ Java从诞生开始就明智地选择了内置对多线程的支持,这使得Java语言相比同一时期的其他语言具有明显的优势.线程作为操作系统调度的最小单元,多个线程能够同时执行,这将 ...

  3. java 并发编程多线程_多线程(一)java并发编程基础知识

    线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程.继承 Thread 类.实现 Runnable 接口.使用 ExecutorService.Callable.Future 实现带 ...

  4. java并发编程入门_探讨一下!Java并发编程基础篇一

    Java并发编程想必大家都不陌生,它是实现高并发/高流量的基础,今天我们就来一起学习这方面的内容. 什么是线程?什么是进程?他们之间有什么联系? 简单来说,进程就是程序的一次执行过程,它是系统进行资源 ...

  5. Java并发编程 基础知识学习总结

    Java并发编程一直是Java程序员必须懂但又是很难懂的技术内容,这部分的内容我也是反复学习了好几遍才能理解.本篇博客梳理一下最近从<Java 并发编程的艺术>和他人的博客学习Java并发 ...

  6. 【Java并发编程的艺术】读书笔记——Java并发编程基础

    学习参考资料:<Java并发编程的艺术> 文章目录 1.线程的几种状态 2.如何安全的终止线程 3.线程间通信(重要) 3.1共享内存 3.2消息传递 1.线程的几种状态 线程在运行的生命 ...

  7. Java并发编程基础-ReentrantLock的机制

    同步锁: 我们知道,锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源,在Lock接口出现之前,Java应用程序只能依靠synchronized关键字来实现同步锁 ...

  8. java并发编程基础—生命周期与线程控制

    一.线程生命周期 线程被创建启动以后,他既不是一启动就进入执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(Running).阻塞(Bloc ...

  9. java并发编程基础系列(五): 创建线程的四种方式

    线程的创建一共有四种方式: 继承于Thread类,重写run()方法: 实现Runable接口,实现里面的run()方法: 使用 FutureTask 实现有返回结果的线程 使用ExecutorSer ...

  10. Java 并发编程 基础

    第一章 线程的操作 1.1创建多线程的方式 第一种:继承Thread 第二种:实现Runnable接口 1.2线程的常用方法 currentThread(): 获取当前线程 isAlive():判断当 ...

最新文章

  1. 快速穷举TCP连接欺骗攻击-利用SYN Cookies
  2. [置顶]       ibatis做分页
  3. 简单使用Boost线程池threadpool
  4. Java线程的使用及共享协作
  5. Python与机器视觉(x)下雨啦,图片模拟雨天效果
  6. Java中String连接性能的分析
  7. [恩分到动归分类好了]取石子游戏
  8. VoLTE技术中的会话持续性-ICS
  9. 自学python-python自学难吗
  10. 在Android关机中插入脚本
  11. 瑞利信道:从原理到实现
  12. GB 4208-93 外壳防护等级(IP代码)
  13. linux删除svn版本库
  14. 前端常用属性知识点--文档
  15. 异步获取到图虫上的图片
  16. 8.8.6. Polygons
  17. IP地址的划分-------IP地址的借位情况
  18. dot Net SerialPort 组件关闭时卡住
  19. 惠普手机将入华展开厮杀 - 摘自IT时代周刊
  20. XXTEA 加解密算法的 Python 实现

热门文章

  1. 外星人计算机桌面,Alienware Alienware桌面Win10系统和BIOS设置教程
  2. s7700设备如何清除console密码
  3. Mysql ERROR 1067: Invalid default value for ‘date’ 解决
  4. CSS实现DIV垂直水平居中
  5. 设计一种可全向移动的球形机器人
  6. MYSQL:查询年龄最大的5个学生(包括年龄并列第5名的所有学生)的姓名、年龄及所在系。
  7. 开发指南专题十五 JEECG微云快速开发平台EXCEL导入导出
  8. 火车票抢票软件哪个成功率高更靠谱?
  9. 点击链接弹出qq对话框
  10. linux内核裁剪的具体过程和方法