• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

lzhcode

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

多线程

一、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的状态包括:New、Runnable、Blocked、Waiting、Timed Waiting和Terminated;

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

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

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

posted on 2020-01-01 23:06  lzhcode  阅读(170)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3