什么是进程,进程与线程之间的关系!!!

什么是进程,进程与线程之间的关系!!!

首先我们先讲解进程,进程是什么呢!!!

进程:是指系统正在运行的一个应用程序(手机上可以理解为一个App,PC上可以理解为程序),是系统进行资源分配和调度的基本单位。一个程序或者应用至少有一个进程。

线程:线程呢则是CPU调度最小(比进程更小)的能独立运行的执行单元,也是有限的系统资源。
在这里插入图片描述

两者之间的关系:一个进程之间至少包含一个或多个线程,(包含的关系)进程有一个独立的运行空间,其中的线程共享此空间,也拥有此进程的全部资源,,,因此可以并发(并行)执行。

创建线程的三种方式
一、继承Thread类:实现run方法
二、实现Runnable接口:实现run方法
三、通过Callable和Future创建线程:实现Call方法
1、Callable与Runnable对比
由于run()方法返回值为void类型,所以在执行完任务之后无法返回任何结果。
Callable位于java.util.concurrent包下,它也是一个接口,在它里面也只声明了一个方法,只不过这个方法叫做call():

这是一个泛型接口,
call()函数返回的类型就是传递进来的V类型

详情可以参考这位大佬的:www.cnblogs.com/jason201852…

线程的生命周期:新建,就绪,运行,阻塞,销毁(找地方剪了一张)
在这里插入图片描述

线程还会阻塞哦
这里我写了三种

(01) 等待阻塞 – 通过调用线程的wait()方法,让线程等待某工作的完成。
(02) 同步阻塞 – 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态。

(03) 其他阻塞 – 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

--------------------------------------------分割线-------------------------------------------

多进程:在清单文件中给四大组件指定属性android:process开启多进程(在内存允许的条件下以开启N个进程)
并发执行:多个任务一个一个执行,因为运行的速度很快,所以看不出什么,但是同一时间点只有一个程序在运行,
并行执行:多个任务同时处理执行,不分先后
(百度剪的)
在这里插入图片描述

多线程安全问题
为什么会出现线程不安全:多个线程同时访问一个变量,同时修改,缓存不一致问题,导致线程不安全。
解决方法:加锁,同一时刻,只有一个线程能访问到当前资源,加锁方式有:目前有三种synchronized,lock,ReadWriteLock;
我先举个简单例子:比如有个数据int i = 100,线程A和线程B。线程A先调用 i,并且在 i 的基础上加10。还没回调数据的时候,线程B也请求到了 i 并且减了20,减完后线程A已经回调完成,这时 i 的数据变成了110;而线程B请求的 i 是100,减完后变成了80,线程B再回调数据,请问:i 应该是多少???这就是我所理解的线程安全
在这里插入图片描述

如何解决线程安全问题
加锁:可以加在方法上,可以加在代码块上。加到方法上分为:静态方法和实例方法,加到代码块上有两种方式,this和类名.Class两种。
大佬的详细方法:
blog.csdn.net/zxq125521/a…

原谅我不想写了!!!所以给你们找了个大佬的代码,相信优秀的你不会在意这些细节的
在这里插入图片描述

接下来还有一个线程池
线程池简介:线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。 一个线程同时只能执行一个任务,但可以同时向一个线程池提交多个任务。多线程运行时间,系统不断的启动和关闭新线程,成本非常高,会过渡消耗系统资源,以及过渡切换线程的危险,从而可能导致系统资源的崩溃。这时,线程池就是最好的选择了

好了,本篇博客到此结束,都看到这里了 加个关注啊

有什么问题可以在评论区留言(求私信)哦,编程之路漫长,我们一起共勉!!!

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值