1. 进程与线程的概念
进程:正在进行的程序
线程:进程内部的一条执行路径或一个控制单元
我的理解:进程负责找资源,线程负责去执行
2. 实现多线程的方法
继承 Thread 类
实现 Runnable 接口
3. 线程状态图
4. 多线程安全问题
举例说明:排队拿票
目前第60号,我去1号机拿票,出来第61号;
有个人去2号机拿票,但是1号机线程并没有执行完毕,出来的也是61号;
一共出现了2张61号的票,这个是不合理的。
解决问题:一个线程在执行过程中,其他线程不能参与进来
解决方法:加锁,作用是保证线程安全
5. 多线程的意义(能有什么用)
举例说明:
你玩英雄联盟时,等待进入游戏,等太久了,你想出去看个直播,然后切出去
如果是单线程,系统必须执行完毕英雄联盟的线程,才会让你切出去看直播(体验很差)
如果是多线程,系统一会执行英雄联盟的线程,一会执行看直播的线程
其实上面举的例子不是很好,只是为了说明多线程的意义,仅做理解的参考
6. 单线程和多线程的两个需要注意的区别
(1)单线程和多线程其实本质还是--排队
因为多线程并不是“同时进行”,而是一会执行A线程(B停止),一会执行B线程(A停止)
(2)编程的世界里的同步和异步,和现实的世界不一样
上面说了,单线程和多线程其实都不是同时进行,但在现实生活中,因为执行线程的速度比我们人类反应要快,以至于会有这么一个感觉:单线程是一个一个线程执行的,多线程是同时一起进行的。也就是说,现实生活中多线程是同步的,但在编程的世界里,多线程是异步的。你可以这么理解:编程的异步 等于 现实的同步。理由:我不知道,我是死记的。