IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 多线程原理和实战 -> 正文阅读

[Java知识库]多线程原理和实战

1.1? 两个技术面试故事

? ? ?1. 面试故事一

? ? ? 候选人是一位至少有着6年以上的开发经验,毕业于某二本院校计算机专业、看上去非常老练的Java高级工程师,简称 L 君。L 君所应聘的岗位是一个网络设备配置管理类项目的MDE(模块设计师,Java主程)。该项目的特点是:有着8年历史代码积累,反复地修修补补,项目迫切需要进行架构解耦,想找一位开发基础扎实、擅长进行模块解耦的MDE。

? ? ? ?为了考察 L 君的编程水平,笔者先给 L 君上了一道正餐前的开胃菜,出了一个比较简单的题目:

? ? ? ?程序开发时为什么要用多线程,单线程不是很好吗?多线程有什么意义?多线程会带来哪些问题,如何解决?

? ? ? ?以上问题对于一个合格的Java工程师来说是非常简单的。出人意料的是,这位有着6年以上开发经验的 L 君竟然没有答上来。L 君的理由是这个问题太理论、太基础,已经忘记其答案了。呜呼哀哉,这么简单的基础知识都忘记了。当然,L 君也就不好意思,只能有怏怏离去了。

? ? ? ?为什么答不上来呢?可能的原因从 L 君的简历可以探知一二:L 君做了多年传统web开发,在工作过程中,估计 L 君完全是埋头干活,每天只顾着完成领导(开发经理)分配的小任务,完成Web模块的CRUD(增删改查)工作,完全没有去系统地看书学习和理解Java的基础知识,连基础的东西都丢了。

? ? ?2.面试故事二

? ? ? ?候选人是从重庆一所双一流大学毕业了一年的初级Java工程师,简称 Y 君。在面试前,Y 君已经过了一面,并且前面的同事反馈说 Y 君的技术不错。看上去Y君拿到 Offer 已经没什么悬念了。在面试时,考察多线程知识似乎已成习惯,在Y君自我介绍之后,于是一上来就出了古老的面试题:

? ? ? ?什么是线程安全问题,“++”运算是不是线程安全的?

? ? ?3.面试总结

? ? ? ?两个真真切切的面试故事已经讲完。实际上,笔者面试过的很多候选人都有一个共性问题:Java基础知识尤其是多线程,高并发知识非常欠缺。所以很遗憾,很多候选人无缘优质Offer。

? ? ? 总体而言,多线程是Java程序运行的基础性机制

1.2无处不在的进程和线程

1.2.1

进程一直以来没有完美的定义,一般进程主要是程序段,数据段,进程控制块组成,进度控制块就说指PCB

1.2.2

线程是指一个进程代码段的一次顺序执行流程,线程是CPU调度的最小单位,一个进程包含一个或多个线程

Java程序的进程执行过程就是标准的多进程执行过程。每当使用Java命令执行一个类,实际上就是启动了一个JVM进程。理论上,在该进程的内部至少会启动两个进程,一个是main线程,另一个是GC(垃圾回收)线程。实际上,执行一个java程序,通过Process Explorer,远远不止两个,达到18个之多

1.2.3

1.3创建线程的4种方法

Thread类

Runnable

Callable和FutrueTask

线程池

1.4线程的核心原理

调度和时间片

线程优先级

线程周期

jstack工具

1.5线程的基本操作

1.6线程池原理与实战

1.7确定线程池的线程数

1.8ThreadLocal原理与实战

待续(升级中......)

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:37:29  更:2021-12-02 16:39:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:52:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码