美文网首页JavaEE Note程序员
线程和进程的区别

线程和进程的区别

作者: chcvn | 来源:发表于2017-11-23 17:00 被阅读16次

    简单的来说

    • 一个程序至少有一个进程,一进程至少有一个线程

    • 线程的划分大小小于进程,所以使得多线程程序的并发性能高!

    • 而且,进程在执行的过程中,有着自己独立的内存单元,而多个线程共享内存,从而极大的提高了程序的运行效率.

    而他们的区别在于:

    每个独立的线程有一个程序运行入口,顺序执行序列和程序的出口.
    但是线程不能够独立运行,必须是依赖程序,由程序提供多个个线程的执行控制!
    从逻辑上看,多线程的意义在于一个程序中,有多个执行部分可以同时执行.但操作系统并没有将多个线程看做多个独立的应用,来实现进程的管理和资源分配,这是最重要的区别,也是最大的不同.
    

    为什么这么说列?

    * 进程,是一个具有独立功能的程序,关于某个数据集合上的一次远行活动,进程是系统进行资源分配和管理的独立单位.
    * 线程是进程的一个实体,是cpu在调度和分配的基本单位.
    * 线程自己基本上不拥有系统的资源,它只是有一些运行必不可少的资源�但是它可以与同一进程中的其他线程共享进程所拥有的全部资源
    
    !! 这同时也是 多线程的安全问题
    因为多个线程同时访问同一个数据,而现在的cpu 主频,最低的也是1GHz吧, 也就是说 cpu 高达每秒几十亿的计算,你同一条数据,在 几个线程中,以几十亿的概率被几个线程同时访问,不出现安全性才怪!
    (如何解决此问题:把线程死锁就可以有效的避免,数据重复读取的问题了)
    

    然后,创建线程有哪些方式?

    • 刚才也说了,一个进程至少有一个线程,当我们不做任何的处理的时候,就是单进程.
      而实现多线程
      • 要么继承Thread类,创建线程子类
        重写run 方法,这个run方法的方法体就代表了线程要完成的任务,大部分javaee工程师,都喜欢叫这个方法体为,执行体
        (然后调用对象的,start()方法,启动该线程)
      • 要么就实现Runnable 接口创建线程类
        一样的,重写run方法,
        start启动
        但是要注意:
        创建Runnable实例类的实例,是作为Thread的target来创建Thread对象的,这个Thread才是线程的真正对象.

    思维导图如下:

    enter description hereenter description here

    相关文章

      网友评论

        本文标题:线程和进程的区别

        本文链接:https://www.haomeiwen.com/subject/rmozvxtx.html