java进程与线程

  • 线程和进程的不同

    1. 概念不同
      进程是个有独立功能的实例,像浏览器 qq音乐之类的 启动之后都是一个进程
      线程是cpu的基本调度单位,一个进程里包含一个或者多个线程
    2. 内存共享方式不同
      进程之间不能之间访问和通讯,需要借助ipc完成进程间的通讯
      线程之间通信起来很容易,可以直接访问共享的内存且不需要额外的处理。
    3. 拥有的资源不同
      线程之间有很多东西都是共享的,最典型的就是代码块是共享的。
      线程之间不共享的,每个线程都有独立的堆栈,线程的id
    4. 数量不同
      一个进程里会有多个线程
  • 相同点
    他们的生命周期很相似,
    进程作为一个程序,他的生命周期就是被创建 然后执行他的认为 到被关闭 或者执行结束 消亡
    线程和它也是很类似。

  • 什么是多线程
    指一个程序或者进程中有多个线程同时运行;
  • 常见的多线程
    1. 合租住房子
    2. 抢火车票
  • 为什么要使用多线程

    1. 提高cpu的利用率
    2. 提高处理速度
      如果所有程序都是单线程的,就乱了。

    举例服务器可以一次性处理多个用户请求(多个线程请求),假如不适用多线程,服务器就一次处理一个用户的请求,
    那么别的用户就需要 等待第一个用户完成他想做的事 才能被服务,这样用户体验极差。

  • 什么情况适合使用多线程。

  • 当程序中可串行的部分越多时 使用多线程的好处就越明显;
    提高工作效率

1.服务器处理多线程的请求
2. 迅雷的并行下载
3. 3. 压测

  • 多线程的局限性
    1. 性能,cpu在线程间来回切换有损耗
    2. 对于一些很难并行的任务 很难高效并行(如鱼在鱼塘中长大的时间 不管你用多少个鱼塘很难改变鱼生长周期)
    3. 数据安全问题 多线程中配合不天衣无缝 一但出现问题就会导致数据的不同步 , 还有死锁和线程饥饿(线程太多导致有些线程始终抢不到运行时间导致长时间不运行)

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。邮件至 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%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏