| |
|
开发:
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原理与实战待续(升级中......) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |