首页 > 其他分享 >【多线程总结(一)-基础总结】

【多线程总结(一)-基础总结】

时间:2022-10-17 12:03:57浏览次数:51  
标签:总结 runnable run thread 基础 线程 sleep 多线程 守护


前言:

多线程在我们的程序开发过程中起着关键的作用,本篇博客咱们从基本的知识开始讲起,来共同分享一下多线程的知识

核心:

  什么是线程呢?咱们首先可以从进程来说,进程是指在系统中正在运行的一个应用程序,在计算机中,一个任务就是一个进行,在每一个进程内部至少要有一个线程在运行,一个进程可以有多个线程,比如像生活中的实例,检票是一个进程,那么每个检票的人是线程.下面咱们来说创建线程的方式.
 1.创建线程方式的有两种:
  方式一:继承thread,重写run方法,
  方式二:实现runnable
但是我在书中看到,作者说准确的讲,创建线程只有一种方式那就是构造thread类,而实现线程的执行单元则有两种方式:
  第一种:重写thread的run方法,
  第二种:实现runnable接口的run方法,并且将runnable实例用作构造thread的参数.
2.线程的生命周期:
  new
  runnable
  running
  blocked
  terminated
新建—-就绪—运行—-阻塞—死亡,new的状态通过start方法进入runnable状态,runnable状态必须调用start方法,此时才是真正的在jvm进程中创建了一个线程.running状态除了不能到达new状态,其他的状态都可以到达.
3.runnable接口:
  只定义了无参无返回值的run方法.
  重写thread类的run方法和实现runnable接口的run方法还有一个很重要的不同,那就是thread类的run方法是不能共享的,也就是说A线程不能把B线程的run方法当做自己的执行单元,而使用runnable接口很容易能实现这一点,使用同一个runnable的实例构造不同的thread实例.
4.在这里,我们学到了守护线程
  守护线程
  守护线程是一类比较特殊的线程,一般用于处理一些后台的工作.
  守护线程设置,调用setDaemon方法将thread设置为守护线程,true代表守护线程,false代表正常线程.
守护线程的作用:
  守护线程经常用作与执行一些后台任务,因此有时它也被称为后台线程,当你希望关闭某线程的时候,或者退出JVM进程的时候,或者退出JVM进程的时候,一些线程能够自动关闭,此时就可以考虑用守护线程为你完成这样的工作.
5.说到了Thread API,那么咱们来比较一下yield和sleep的区别;
  sleep只会导致当前线程暂停指定的时间,没有CPU时间片的消耗
  yield只是对CPU调度器的一个提示,如果CPU调度器没有忽略这个提示,他会导致线程上下文的切换.
  sleep会使线程短暂block,会在给定的时间内释放CPU资源
  yield会使running状态的thread进入runnable状态
  sleep几乎百分之百的完成了给定时间的休眠,二yield的提示并不能一定担保
一个线程sleep另一个线程调用interrupt会捕获中断信号,二yield不会.

总结:

  本篇博客暂时讲到这里,下一篇博客咱们来说线程安全与线程同步.


标签:总结,runnable,run,thread,基础,线程,sleep,多线程,守护
From: https://blog.51cto.com/u_15586641/5762061

相关文章

  • 【多线程总结(二)-线程安全与线程同步】
    前言:继前一篇博客,今天咱们这篇博客来说说线程安全与线程同步那些事.核心:初识synchronized关键字可以实现一个简单的策略防止线程干扰和内存一致性错误,如果一个对象对......
  • 【多线程总结(四)-三大性质总结】
    前言在并发编程中分析线程安全的问题时三条性质:原子性,有序性和可见性往往是非常重要的,本篇博客主要来用synchronized和volatile关键来进行对比。首先来看看宏观导图核心原......
  • Linux基础_2_bash功能
    查看当前shell:echo $SHELL查看可用shell:cat /etc/shells命令行编辑光标跳到行首:Ctrl+a光标跳到行尾:Ctrl+e以单词为单位快速跳转光标:Ctrl+左右键删除光标前面的所......
  • 9.5 模拟赛总结
    2021.09.05不知为何没点发布。根据昨天发生的状况,开考赶紧先把题都看了一遍,还好,都能看懂。\(T1\)的式子推了好半天,没推出来啥结论,于是把所有题的部分分都想了一下。\(T......
  • 多线程-匿名内部类方式实现线程的创建
    使用线程的匿名内部类方式可以方便的实现每个线程执行不同的线程任务操作匿名:没有名字内部类:写在其他类内部的类匿名内部类作用:简化代码把子类继承父类重写父......
  • 多线程-线程安全前篇
    线程安全如果有多个线程在同时运行而这些线程可能会同时运行这段代码程序每次运行结果和单线程运行的结果是一样的而且其他的变量的值也和预期的是一样的就像线程安......
  • 多线程-线程安全-同步代码块
    线程安全问题产生的原理出现了线程安全问题卖票出现了重复的票图解 线程同步当我们使用多个线程访问同一个资源的时候且多个线程对资源有写的操作就容易出现线......
  • 多线程-线程安全-同步方法
    同步方法使用synchronized修饰的方法就叫做同步方法保证A线程执行该方法的时候其他线程只能在方法外等着格式:publicsynchronizedvoidmethod(){可能......
  • 多线程-线程安全问题-lock锁
    lock锁lock机制提供了比synchronized代码块和synchronized方法更广泛的锁定操作同步代码块/同步方法具有的功能lock都有除此之外更强大更体面面向对象lock隶属于jav......
  • 多线程-并发和并行和线程与进程
    并发和并行并发:指两个或者多个事件在同一个时间段内发生并行:值两个或者多个事件在同一时刻发生(同时发生) 更详细的图解:线程和进程进程基本介绍是指一个内存中运......