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

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

作者: SamSho | 来源:发表于2018-07-31 11:07 被阅读0次

    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):线程的简单实现与管理

          本文链接:https://www.haomeiwen.com/subject/gkmcvftx.html