zoukankan      html  css  js  c++  java
  • 多线程

    一、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()方法会立刻返回。

  • 相关阅读:
    安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
    VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
    数据库的交互模式 常用的dos命令 (第一天)
    Validate US Telephone Numbers FreeCodeCamp
    Arguments Optional FreeCodeCamp
    Everything Be True FreeCodeCamp
    Binary Agents FreeCodeCamp
    Steamroller FreeCodeCamp
    Drop it FreeCodeCamp
    Smallest Common Multiple FreeCodeCamp
  • 原文地址:https://www.cnblogs.com/lz-huihui/p/12130899.html
Copyright © 2011-2022 走看看