多线程不能不知道的之线程入门

来源:互联网 发布:java中的锁 编辑:程序博客网 时间:2024/05/16 08:01

多线程往往是现在涉及到很多的东西,小编稀稀拉拉接触过很多次多线程,但是也大多属于了解,在实际项目中的应用还是不多。最近正好在研究多线程。如果有问题,记录下来,以后学习深入了,还可以回来再回答一遍乜。

首先明白三个概念和名词

程序、进程、线程;多线程、线程池这些都是什么意思?

程序:一段可执行的代码和数据的集合,是静态实体。例如QQ、暴风影音..

进程:在内存中一段代码针对某一数据集合的运行活动,是动态实体,进程<=程序。具有系统资源

线程:是资源调度分配的最小执行单位。不具备系统资源,只拥有一些基本的资源如寄存器、程序计数器等。

多线程:顾名思义就是多个线程,这些线程可以都存在于一个进程中。例如我们可以用一个QQ号可以和多个好友同时聊天。

线程池:是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。

举个例子:程序就像是一家快递公司,进程就是一次邮包运输,可以把它想象成一架装满邮包的飞机或卡车。运输工具上一个一个的邮包就可以看成是里面的线程,每个邮包共享一个运输工具的空间,他没有独立的空间,多个邮包代表多个多线程。多辆运输工具代表多进程。而线程池在这里面可以理解为将快递排号,到一个区域,相应区域的用于就可以拿到快递。

线程的类型

  • 主线程:当一个程序启动时,就有一个进程被操作系统(OS)创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程(Main Thread)。每个进程至少都有一个主线程,主线程通常最后关闭。
  • 子线程:在程序中创建的其他线程,相对于主线程来说就是这个主线程的子线程。
  • 守护线程:daemon thread,对线程的一种标识。守护线程为其他线程提供服务,如JVM的垃圾回收线程。当剩下的全是守护线程时,进程退出。
  • 前台线程:相对于守护线程的其他线程称为前台线程。

单个CPU和多核CPU

能运行多少线程和计算机的硬件也是有息息相关的联系的。例如单个CPU和多核CPU运行的线程数是不一样的呃,。比如单个CPU,资源是唯一的,如果要执行多线程就要根据某种规则来执行:

    1)按照优先级调度;

    2)按照FIFO调度;

    3)按照时间片调度等等。

多核CPU就是,可以在不同的核心同时运行N个线程。

多线程知识点


继续学习下一篇:多线程、线程池的比较

0 0
原创粉丝点击