什么是多线程和线程问题

匿名 (未验证) 提交于 2019-12-03 00:30:01

什么是多线程,一组独立功能的静态计算机指令:

进程是一次程序动态的运行过程,他有就绪,阻塞,运行等状态。

进程:向系统申请资源的独立单位。

QQ。就是开了一个进程,再打开迅雷,又开了一个进程,那我们在QQ上可以传输文字,语音,广告弹出,理解为开了一个线程,换句话理解就是线程是任务,一个进程可以管理多个线程,进程里面会至少包括一条线程,通俗地讲,进程是领导,线程是员工,进程管理线程,进程本身不执行,只是为线程提供运行环境申请内存空间。

进程的切换代价非常的大

1.单进程单线程:一个人在一个桌子上吃菜。
2.单进程多线程:多个人在同一个桌子上一起吃菜。
3.多进程单线程:多个人每个人在自己的桌子上吃菜。

多线程:

(1)一个进程里面同时执行多个任务。

(2)一个进程里面至少有一个线程

(3)开启多个线程是为了同时执行多个任务,也是同时执行多部分代码。

利弊:

好处:解决了多任务同时执行的问题。

弊端:线程切换花费额外的资源,同时切换也是一个耗时的步骤。

如何让创建线程:

第一种方式

(1)Thread的子类

(2)run方法

(3)创建子类对象

(4)开启线程

name获取线程的名字,默认为Thread-x

java是单继承。但是我们可以用接口的方式来扩展。

runnable接口,实现了run方法,创建线程Thread(myRunnable)开启。

一般我们都是使用第二种方法创建线程,

start,而不是直接run,如果直接使用run,那程序的执行就和函数的调用没有区别了,一直在调用主线程。

线程调度:

CPU执行这条线程的概率,并不一定执行完毕再去执行其他线程。

线程让步:

线程插队:

线程安全:

出现线程安全的条件

(1)多个线程同时访问共享资源(共享数据)

(2)操作共享数据的代码有多条

对于不能被同步执行的代码,我们只要保证当前有一个线程执行的时候,其他线程不能进入执行。

类似公共厕所,进入之后先上锁,离开之后先开锁,这个就保证里面只有一个人在使用。

Java中提供给我们一种“同步代码块”可以解决这个问题

好处:解决了线程安全的问题

坏处:相对降低了效率,因为每次都要去判断是否有同步锁。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!