多线程(个人笔记一)| 8月更文挑战

158 阅读3分钟

这是我参与8月更文挑战的第1天,活动详情查看:8月更文挑战

当回首往事,不因虚度年华而悔恨。

线程入门到放弃 (概念篇初体验)

在我们学习之前,我们先要思考一下,我们为什么要学习多线程?

  • 为了学习而学习,不知道为什么,反正要学习
  • 盲目学习,别人都学,我也要学习
  • 为了面试而学习,面试造火箭时,多线程可以多拧螺丝钉
  • 感兴趣学习、且能加薪而学习

正题:多线程是什么?多线程能干什么?多线程怎么用?----别问,问就是我也不知道。

相关概念

  • 程序:程序是计算机中指令和数据的有序集合。(通俗点就是全是bug的静态代码)
  • 进程
    • 是程序在处理机上的一次执行过程
    • 是操作系统进行资源调度的基本单位
  • 线程
    • 线程是进程的一个执行单元
    • 一个进程至少有一个线程(也可以是多个线程)
    • 线程共享进程中的资源,但没个线程有自己的寄存器、线程栈等
    • 线程是CPU调度的最小单位
  • 串行:串行是指所有的任务按照先后顺序执行。(场景:过单人独木桥,一个一个过)
  • 并发:两个或两个以上的时间在同一时间段内间隔发生。(场景:两队人去蜜雪冰城买饮料,两队的人间隔交替买)
  • 并行:两个或两个以上的事件在同一时间段内同时发生。(场景:买火车票,好几个窗口同时出售)

线程创建与启动

​ 创建线程就是创建一个Thread类的对象实例。常用的创建方式有两种构造方法 new Thread() 和 new Thread(Runnable);

一、new Thread()

  1. 创建ThreadExtend类,继承Thread类,重写run()方法

    public class ThreadExtend extends Thread {
        @Override
        public void run() {
            System.out.println("继承Thread类,重写run方法。。");
        }
    }
    
  2. 创建Test测试类

    public class Test {
        public static void main(String[] args) throws InterruptedException {
            ThreadExtend threadExtend = new ThreadExtend();
            threadExtend.start();
            //Thread.sleep(1000);  //main线程睡一秒
            System.out.println("main线程执行。。。");
        }
    }
    
  3. 运行结果

    ///:
    main线程执行。。。
    继承Thread类,重写run方法。。
    -----------------------------------------
    当打开测试类注解时,输出结果
    ///:
    继承Thread类,重写run方法。。
    main线程执行。。。
    

二、new Thread(Runnable)

  1. 创建ThreadImpl类,实现Runnable接口,重写run()方法

    public class ThreadImpl implements Runnable {
        @Override
        public void run() {
            System.out.println("实现Runnable类,实现方法。。。");
        }
    }
    
  2. 创建Test2测试类

    public class Test2 {
        public static void main(String[] args) throws InterruptedException {
            ThreadImpl threadImpl = new ThreadImpl();
            Thread thread = new Thread(threadImpl);
            thread.start();
            //Thread.sleep(1000); //main线程睡一秒
            System.out.println("main线程执行。。。");
        }
    }
    
  3. 运行结果

    ///:
    main线程执行。。。
    实现Runnable类,实现方法。。。
    ----------------------------------------
    当打开测试类注解时,输出结果
    ///:
    实现Runnable类,实现方法。。。
    main线程执行。。。
    

END-- 持续更新...


  • 没有华丽的排班。。
  • 文中如有错误,欢迎在评论区指正。。
  • 个人笔记,分享给正在学习的朋友们。加油!