java进程与线程
线程和进程的不同
- 概念不同
进程是个有独立功能的实例,像浏览器 qq音乐之类的 启动之后都是一个进程
线程是cpu的基本调度单位,一个进程里包含一个或者多个线程 - 内存共享方式不同
进程之间不能之间访问和通讯,需要借助ipc完成进程间的通讯
线程之间通信起来很容易,可以直接访问共享的内存且不需要额外的处理。 - 拥有的资源不同
线程之间有很多东西都是共享的,最典型的就是代码块是共享的。
线程之间不共享的,每个线程都有独立的堆栈,线程的id - 数量不同
一个进程里会有多个线程
- 概念不同
相同点
他们的生命周期很相似,
进程作为一个程序,他的生命周期就是被创建 然后执行他的认为 到被关闭 或者执行结束 消亡
线程和它也是很类似。
- 什么是多线程
指一个程序或者进程中有多个线程同时运行;
- 常见的多线程
- 合租住房子
- 抢火车票
为什么要使用多线程
- 提高cpu的利用率
- 提高处理速度
如果所有程序都是单线程的,就乱了。
举例服务器可以一次性处理多个用户请求(多个线程请求),假如不适用多线程,服务器就一次处理一个用户的请求,
那么别的用户就需要 等待第一个用户完成他想做的事 才能被服务,这样用户体验极差。什么情况适合使用多线程。
当程序中可串行的部分越多时 使用多线程的好处就越明显;
提高工作效率
1.服务器处理多线程的请求
2. 迅雷的并行下载
3. 3. 压测
- 多线程的局限性
- 性能,cpu在线程间来回切换有损耗
- 对于一些很难并行的任务 很难高效并行(如鱼在鱼塘中长大的时间 不管你用多少个鱼塘很难改变鱼生长周期)
- 数据安全问题 多线程中配合不天衣无缝 一但出现问题就会导致数据的不同步 , 还有死锁和线程饥饿(线程太多导致有些线程始终抢不到运行时间导致长时间不运行)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。邮件至 wcfinyourheart@163.com
文章标题:java进程与线程
本文作者:wcf
发布时间:2020-05-12, 17:09:18
最后更新:2020-05-12, 17:12:17
原始链接:http://1007638786.github.io/2020/05/12/java-jin-cheng-yu-xian-cheng/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。