java多线程应用

线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。

一个标准线程的构成包括以下四个部分:

  • 线程的ID;
  • 当前指令指针(PC);
  • 寄存器集合;
  • 堆栈组成。

        线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。

线程的三种运行状态:

  • 就绪

就绪状态就是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机。

  • 阻塞

阻塞状态是指线程在等待一个时间(如某个信号量),逻辑上不可执行。

  • 运行

运行状态是指线程占有处理机正在运行。

        用多线程只有一个目的,那就是更好的利用cpu资源,因为所有的多线程代码都可以用单线程来实现。当然对于反应“多角色”的程序代码,最起码每个角色都要给一个线程,否则无法模拟实际场景,自然不能说用单线程去实现:比如最常见的“生产者,消费者模型”。

很多人都对其中的一些概念比较模糊,如同步、并发等,简单做一下解释,以免产生误会。

  • 多线程:改程序(一个进程)运行时产生了不止一个线程。

并行与并发:

  • 并行:多个CPU实例或者多态机器同时执行一段处理逻辑,是真正的同时。
  • 并发:通过CPU调整算法,让用户看上去同时执行,实际上从CPU操作层面不是真正的同时。
  • 线程安全:经常用来描绘一段代码。指在并发的情况之下,该代码经过多线程使用,线程的调度顺序不影响任何结果。这个时候使用多线程,我们只需要关注系统的内存,CPU是否够用即可。反过来线程不安全就意味着线程的调度顺序会影响最终

你可能感兴趣的:(java程序,java编程)