Java主线程
Java 程序一启动,立刻有一条线程在跑,通常叫主线程(main thread),因为它从程序开始就执行。 主线程重要在两头:它是产生其他子线程的线程;通常它必须最后结束,因为它还要做各种关闭动作。 主线程虽是自动创建的,但仍可用 Thread 对象控制。先调公有静态方法 currentThread…
Java 程序一启动,立刻有一条线程在跑,通常叫主线程(main thread),因为它从程序开始就执行。 主线程重要在两头:它是产生其他子线程的线程;通常它必须最后结束,因为它还要做各种关闭动作。 主线程虽是自动创建的,但仍可用 Thread 对象控制。先调公有静态方法 currentThread…
Java 运行时在很多方面依赖线程,类库设计也按多线程来考虑。实际上 Java 用线程让整个环境异步,避免 CPU 空转浪费。 对照单线程更容易看清优势。单线程常用轮询事件循环:一条线程在无限循环里询问事件序列,决定下一步。一旦某处理程序占住,别的事件只能等。线程因为等资源阻塞时,整个程序停住。 一…
和其他多数语言不同,Java 内置支持多线程。多线程程序包含两条或两条以上并发运行的部分,每一部分叫一个线程(thread),各有独立执行路径。多线程是多任务处理的一种特殊形式。 多任务处理几乎被所有现代操作系统支持,但分两种:基于进程的和基于线程的。把两者分清很重要。 一、进程与线程 进程(pro…
线程是一个程序内部的顺序控制流:一个进程相当于一个任务,一条线程相当于这个任务里的一条执行路径。多进程是操作系统同时跑多个程序;多线程是同一个应用程序里有多条顺序流同时执行。Java 的线程通过 java.lang.Thread 实现。 JVM 启动时会有一个由 public static void…
继「多线程程序模型研究」之后,再给出一个更复杂、但功能比较完整、可以直接套用的线程池。实例改写自 Apache 项目源码(原文约 800 行,跑在 Tomcat 等服务器上),这里做了精简,只留核心,并配测试类。 学完可以直接模仿套用,不必自己从零再写一遍池。关键两块:线程池类 ThreadPool…
多线程是复杂程序里几乎躲不开的一块。为了把运行性能拉上来,把工作拆成多条线程是常见做法。下面用扫描主机端口的例子,把单线程、一端口一线程、以及两种线程池模型都走一遍。 阅读前提:有一定 Java 基础,对 Socket 不陌生。原文程序在 Java SDK 1.4.2 下编译运行通过。 一、单线程扫…