• 多线程


    一、java多线程简介

          1、 线程就是进程中一个负责程序执行的控制单元。一个进程中可以有多个执行路径,一个进程中至少要有一个线程,开启多个线程是为了同时运行多部分代码。每一个线程都有自己运行的内容,这个内容可以称为线程要执行的任务。

      优点:解决了多部分同时运行的问题。

           弊端:线程太多效率降低。

         2、 应用程序的执行都是CPU在做着快速的切换造成的,这个切换是随机的,JVM启动时就启动了多个线程,至少有两个线程可以分析出来。

    • 执行main函数的线程:代码都在主函数中
    • 负责垃圾回收的线程:在垃圾回收器

         3、创建线程的目的:为了开启一条执行路径,去运行指定的代码和其他代码实现同时运行,运行的指定代码,就是这个执行路径的任务。JVM创建的主线程的任务都定义在了主函数当中,而自定义的线程它的任务:Thread类用于描述线程,线程是需要任务的,所以Thread类也对任务的描述,任务就通过Thread类中的run方法体现,run方法就是封装自定义线程运行任务的函数。run方法中定义就是线程要运行的任务代码。

       开启线程是为了运行指定的代码,所以只有运行Thread类,并复写run方法,将运行的代码定义在run方法中即可。

    二、创建线程的方式

      1、步骤一、定义一个类继承Thread类,覆盖Thread类中的run()方法

         步骤二、覆盖Thread类中的run方法

           步骤三、直接创建Thread的子类对象创建线程

           步骤四、调用start()方法开启线程并调用线程的任务run方法执行

       Thread t1 = new Thread();

       t1.start();//开启线程,调用run方法

       调用run和调用start有什么区别?

          2、多线程的区分:

       可以通过Thread的getName()方法获取线程的名称Thread-;线程在创建的时候就已经完成了名称的定义

          获取当前正在运行线程的名字,Thread.currentThread().getName();主线程的名字是main。

               CPU的执行资格:可以被CPU处理,在处理队列中排队

        CPU的执行权:正在被CPU处理

    1、继承Thread类方式的缺点:如果类已经继承,则无法再继承Thread类

    2、通过Runnabe接口实现多继承,可以同时实现继承,避免单继承,方便共享资源,同一份资源多个代理访问。

    3、java用Thread对象表示一个线程,通过调用一个start()方法启动线程;一个线程对象只能调用一次start()方法;线程的执行代码写在run()方法中;线程调度由操作系统决定,程序本身无法决定调度顺序;Thread.sleep()可以把当前线程暂停一段时间。

    4、Java线程对象Thread的状态包括:NewRunnableBlockedWaitingTimed WaitingTerminated

    通过对另一个线程对象调用join()方法可以等待其执行结束;

    可以指定等待时间,超过等待时间线程仍然没有结束就不再等待;

    对已经运行结束的线程调用join()方法会立刻返回。

  • 相关阅读:
    SecureCRT的SFTP在Windows与Linux之间传输文件
    VBS基础篇
    VBS数组函数学习实例分析
    vbs操作txt文本文件常用方法(函数)
    VBS基础篇
    CF91B Queue(单调队列+二分)
    CF1343D Constant Palindrome Sum(差分)
    CF1336C Kaavi and Magic Spell(区间dp)
    AcWing255 第K小数(整体二分)
    P3515 [POI2011]Lightning Conductor (四边形不等式优化)
  • 原文地址:https://www.cnblogs.com/lz-huihui/p/12130899.html
Copyright © 2020-2023  润新知