深入浅出多线程——线程基础篇

  • 概述

  多线程是java编程中非常重要的一块,在多核CPU时代,多线程是最直接提高程序执行效率的途径。所以学好多线程对我们极其重要。

  • Java多线程的基本应用

  创建多线程有两种方式:

    1,继承Thread类

/**
 * @author itunic.com
 * 继承Thread实现多线程
 * @see Thread
 */
public class RunThread extends Thread {
    
    /**
     * 线程执行内容。
     */
    @Override
    public void run() {
        System.out.println("Thread execution content!");
    }

    public static void main(String[] args) {
        //创建线程对象
        RunThread rt = new RunThread();
        //启动rt线程
        rt.start();
    }
}

 

 

    2,实现Runnable接口

/**
 * @author itunic.com
 * Runnable接口实现多线程
 * @see Runnable
 */
public class RunnableThread implements Runnable {

    /**
     * 线程执行内容。
     */
    @Override
    public void run() {
        System.out.println("Thread execution content!");
    }

    public static void main(String[] args) {
        //创建线程对象
        Thread t = new Thread(new RunnableThread());
        //启动t线程
        t.start();
    }

 

 

  • Java多线程的6种状态

  根据官方定义,线程状态分为:NEWRUNNABLEBLOCKEDWAITING、TIMED_WAITING、TERMINATED六种状态。

  NEW: 线程尚未启动处于该状态。也就是说 new Thread 之后,调用start方法之前所处于的状态。

  RUNNABLE: 线程处于JVM运行状态,但可能正等待操作系统的执行调度。

  BLOCKED: 线程阻塞状态,导致该状态的原因通常是它处于临界资源池,等待一个“锁”。

  WAITING:通常是指线程拥有对象锁后进入相应的区域,调用锁对象的wait()方法后产生的一种结果。除此之外,还有变相的实现方式:Thread.join()、LockSupport.park()等。

  TIMED_WAITING:与WAITING状态类似,不同的是TIMED_WAITING拥有超时设置,当超过设置的时间,该状态自动变为RUNNABLE状态。导致该状态的实现方式有:Thread.sleep(long timeout)、Thread.join(long timeout)、Object.wait(long timeout)、LockSupport.parkNanos、LockSupport.parkUntil等。

  TERMINATED:该状态与NEW状态一样为JVM内部状态,不会映射到操作系统的线程状态。该状态为线程结束后的状态,表示线程执行完毕。

  • 结语

   本文介绍了java多线程的实现方式及运行状态,算是一篇《深入浅出多线程》系列的引言。本博客仅仅想把自己掌握的东西做一些沉淀及反思,方便本人及有需要的人查阅。对该系列有兴趣的朋友可以关注我。

posted @ 2017-11-12 16:21  行者悟空  阅读(292)  评论(2编辑  收藏  举报