多线程

线程

  线程指的是一条流水线,整个执行过程的总称,也是一个抽象概念

  线程是CPU的最小执行单位,是具体负责执行代码的

 

  进程是一个资源单位,其中包括了该程序进行所需的所有资源

 

  线程的特点:

    一个进程中至少包括一个线程,是由操作系统自动创建的,称之为主线程

    一个进程中可以有任意数量的线程

    创建线程的开销对比进程来说是小的多

    同一个进程中的线程间数据是可以共享的(最主要的特点)

 

  如何使用:使用的方式与进程一致

  不同的是:创建线程的代码可以写在任何位置

  主线程任务执行完毕后,进程不会立即结束,会等待所有子进程都执行完毕

  在同一个进程中,所有线程都是平等的,没有子父这么一说

  创建进程与创建线程的速度差距大约是一百六十倍左右

 

锁 

  线程安全也是通过锁来保证,锁的用法与进程中的一模一样

  当开发一些高并发程序时,很有可能出现线程/进程安全问题

  解决方案只有加锁,但是在使用锁时很有可能出现死锁问题

 

  出现死锁的两种原因:

    1.对同一把锁调用了多次acquire导致死锁问题(最low的死锁问题)

    2.有多把锁,一个线程抢一把锁,要完成任务必须同时抢到所有的锁,这将导致死锁问题

 

  如何避免:

    1.能不加锁就不加

    2.如果一定要加,要保证锁只有一把

 

信号量

  可以控制同一时间,有多少线程可以并发的访问

  不是用来处理线程安全问题的

 

守护线程

  守护线程会在主线程序结束后立即结束,即使任务还没有完成

  主线程会等待所有子线程全部完成后才会结束

  守护线程会在所有非守护线程结束后结束

 

 

  

    

posted @ 2019-03-07 15:19  -Rye-  阅读(72)  评论(0)    收藏  举报