JDK多线程基础笔记(1):线程的简单实现与管理

title: JDK多线程基础笔记(1):线程的简单实现与管理

date: 2014-6-29 8:00

comments: true

tags:

  • thread
  • runable

categories:

  • Java 多线程

[TOC]

多线程实现

实现方式

  1. 在 Java 中要想实现多线程,有两种方式:
  • 一种是继承 Thread
  • 一种是实现 Runable 接口
  1. 以上两种方式创建的线程,在 run() 方法结束后,自动回收该线程
  2. 不管是何种方式实现线程,每个线程都要给他一个名字,这对于问题排查系统监控有帮助
  3. 以上的线程都没有返回,实现 Callable,有返回的线程(抛异常),见 Future设计模式相关文章

实现示例

  1. 继承 Thread 类实现
static class InThreadFromClass extends Thread {
    
    public InThreadFromClass(String name) {
        super(name);
    }
    @Override
    public void run() {
        System.out.println("继承 Thread 实现线程。 线程名称为: " + Thread.currentThread().getName());
    }
}

InThreadFromClass thread = new InThreadFromClass("Thread ");
thread.start();
  1. 实现 Runable 接口实现
/**
 * 实现 Runnable 接口实现
 */
static class InThreadFromRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("实现 Runnable 接口实现。 线程名称为: " + Thread.currentThread().getName());
    }
}

Thread runnable = new Thread(new InThreadFromRunnable(), "ThreadFromRunnable");
runnable.start();

线程管理

  1. 控制线程的数量:一个系统需要大量的线程来维持其应用。线程数量过大,会耗尽 CPU 和内存
  • 每个线程的创建、关闭需要一定的时间。如果线程的数量过多,有可能出现创建销毁线程的时间大于该线程真实工作所消耗的时间,得不偿失
  • 线程本身也是要占用内存空间的。大量的线程会抢占内存资源,处理不当,可能会导致OOM(Out of Memory)
  • GC 负担。大量的线程回收,会给 GC 带来很大的压力,延长 GC 的停顿
  1. 推荐使用线程池统一管理线程,而不是显式的创建线程运行,上面的两种运行方式不推荐使用。 见线程池相关博文。

参考

  1. 源码地址
  2. Java线程(一):传统线程的实现、互斥与通信

你可能感兴趣的:(JDK多线程基础笔记(1):线程的简单实现与管理)