什么是线程

线程是进程中最小的执行单元。
它是轻量级的,共享资源,但独立运行。
线程的生命周期包括新建、就绪、运行、阻塞和终止。
线程的开销比进程少,调度速度更快,但进程资源是独立的。
内核级线程由内核直接管理,用户级线程由用户空间管理,混合模型将两者结合起来。
线程适合I/O和CPU密集型任务,但编程需要注意同步问题。

java编程程序员技术面试常见面试?

等等,还有一件事。
我是在杭州一家小公司实习的。
当时,该项目启动了。
团队里只有三个人。
我负责后端,有一个朋友负责前端。
老板正在我旁边的键盘上打字。
半夜两点左右,服务员突然卡住了,顾客勃然大怒。
我们着急了,最终发现两个线程抢了同一个资源,陷入了死锁。
那天晚上,我第一次深刻地理解了什么是线程优先级。
虽然理论上不能保证优先级高的先跑,但是那天优先级高的跑得更快。
不过后来发现有时候换个思路就可以解决问题,比如给资源加个锁超时或者使用可重入锁。
哎,说起来容易,但是遇到了,还是要把基础打牢啊。

话说 线程的概念&生命周期

等等,我昨天在调试崩溃的电商网站后端时,突然卡在了一个方法上。
屏幕上显示出该线程的状态,红圈内的线程被标记为“已阻塞”。
我很困惑,因为数据库查询时间只有5 00毫秒。
我打开任务管理器,看到有1 2 个线程抢了锁,其中一个线程卡住了整整3 分钟。
当时,服务器日志中仍然打印“Thread-5 waiting on Monitor Entry for object instance”。
我突然意识到,这就像菜市场里争夺菜摊一样。
每个人都伸出手,只剩下0.1 秒,看谁能先接触到食物。
操作系统如何在后台协调这些线程?是不是每个帖子都像摊贩一样,先伸手,然后大喊“给我!”?

线程和进程的区别

进程是计算机上程序运行的环境,线程是进程内运行的独立执行流。

进程就像房间,线程就像房间里的人。
一个人的房间很贵,但一个人住同一间房间的成本很低。

切换进程就像搬家或者更衣室,切换线程就像更换地点,成本更低。

操作系统可以打开多个房间,但每个房间只能容纳一个人,而单个房间可以容纳多人。

每个房间都有自己的空间,但住在同一个房间的人共用客厅。