线程Thread,进程process的理解

来源:互联网 发布:淘宝客推广链接被篡改 编辑:程序博客网 时间:2024/06/05 04:33
          经过这几天的学习,对线程方面的知识有了一个更深入的了解,最近的事情好多啊,都没怎么更新博客了,挤到一块写吧
   
   首先什么是进程呢?其实简单的来说,一个程序运行的时候,它就是一个进程。专业一点的话它包括运行在进程中的程序和程序使用到的内存和系统资源。一个进程使用多个线程组成的。
   
   线程的定义其实很简单,它是程序中的一个执行流,其中代码是共享的,即不同的线程是可以执行同样的函数的,这点非常的重要。

   进程和线程的区别:
      1:进程可以产生多个线程
      2:多个线程共享进程的资源,线程之间的通讯非常的方便,但是进程之间的通讯比较麻烦,例如像jndi等等。
      3:进程销毁后,在这个进程中的所有线程也会被销毁,但是线程销毁,进程不一定的销毁

   多线程:其实,了解了单线程之后对多线程也是呼之欲出的,它指的是程序中包含了多个执行流,即在一个程序中可以同时的运行多个不同线程来执行不同的任务,也就是说允许单个程序创建
       多个并执行的线程来完成各自的任务的,注意,这里说的同时其实不是同一时间,cpu调用的策略不一样,但是像时间片轮换的调度策略,只是由于cpu速度快,看起来像是同时的而已。


   使用多线程的目的非常的简单,也就是为了提高cpu的利用率,在多线程的程序中,一个线程必须等待的时候,CPU可以运行其他的线程而不是等待,这样就大大的提高程序的效率了。

   虽然说多线程是解决了cpu利用率的问题,但是它也有不利的地方:。
     1:其实线程也是程序,那么它必然要占用内存的,线程的数量越多,那么占用的内存也越多;
     2:多线程需要协调和管理,所以需要cpu时间跟踪线程;线程之间对共享资源的访问会相互影响的,必须要解决共享资源的问题,虽然提供了像sleep(),wait(),join(),yield(),notify()
    ,同步块等等方法(这些方法在以后的博客中会详细说明)来管理线程,但是怎么灵活的使用也是一个需要注意的问题

     3:线程太多的话会导致控制的问题复杂化。

   java创建线程的方式:
    a. 继承一个Thread类
        Thread t=new Thread();   //产生了一个线程
                t.start();
    b. 实现Runnable接口
        Thread t=new Thread ( new Runnable(){
            public void run(){
            
            }
                 });
        t.start();//启动方法

    总的来说,线程还是很重要的,在以后的学习中要深入的学习,加油。
0 0