zoukankan      html  css  js  c++  java
  • 深入浅出多线程——线程基础篇

    • 概述

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

    喜欢技术、崇尚技术,更敬畏技术!
  • 相关阅读:
    字体图标的制作
    vs code 本地调试配置
    瀑布流
    web组件化开发第一天
    超时调用和间歇调用
    递归 闭包
    继承
    面向对象的程序设计
    function类型
    Date类型
  • 原文地址:https://www.cnblogs.com/itunic/p/thread-basis.html
Copyright © 2011-2022 走看看