首页 > 其他分享 >day4

day4

时间:2024-05-09 23:24:27浏览次数:11  
标签:调用 Thread day4 线程 当中 阻塞状态 方法

课程内容:
  • 线程的概念

  • 引用多线程的原因?

  • 如何实现线程?

  • 如何控制线程?

  • 线程类其它常用方法


线程的概念
  • 线程所在包:java.lang.Thread

  • 理解程序 进程 线程之间的区别:

    程序: 保存在物理介质中的代码片段

    进程: 一旦程序运行起来 就变成了操作系统当中的一个进程
    进程 = 进行当中的程序

    线程: 线程是进程当中更加微观的概念
    程序运行当中一条独立的执行线索
    而多线程编程 就是让程序当中同时拥有多条彼此独立的执行线索
    从而可以同一时间完成多项任务
    同一时间执行多个操作
    同一时间服务多个用户
  • 线程的五大状态 == 生命周期

    新生        就绪        运行        消亡
    NewBorn Runnable Running Dead

          阻塞
        Blocking
    *:CPU时间片 = CPU让一个线程执行一次的时间单位    

引用多线程的原因?
我们不否认 在某些场景下 使用多线程的确可以提高效率
但是使用多线程的根本目的
是为了让程序当中拥有多条独立的执行线索
从而同时完成多项任务(同时服务多个用户)

如何实现线程?
1.extends Thread
   @Override
   public void run(){
  给线程布置任务;
}
2.implements Runnable
   @Override
   public void run(){
  给线程布置任务;
}
3.欠着

如何控制线程?
0.setPriority(int):设置线程的优先级别
  可选范围1-10 默认优先级为5
  优先级高代表抢到时间片的概率高而已
  先设置优先级 再拿对象.start()启动
   
1.static sleep(long): 让当前线程休眠指定的毫秒数(主动进入阻塞状态)
  Thread.sleep(5000);
   
2.static yield():让当前线程直接放弃时间片返回就绪
Thread.yield();
   
3.join():让当前线程邀请调用方法的那个进程优先执行(主动进入阻塞状态)
        在被邀请的进程执行结束之前 当前进程一直处于阻塞态
  et.join()
该方法出现在哪个线程当中 那个线程就是当前线程
  谁主动调用join()方法 谁就是被邀请优先执行的进程
   
*:线程章节所有主动进入阻塞状态的方法 都必须进行异常处理
  因为它们都有throws InterruptedException声明
  而InterruptedException 属于非运行时异常
   
*: 线程章节所有的静态方法 不要关注谁调用方法
  而要关注 调用出现在哪个线程的线程体
  出现在谁的线程体 就是操作那个线程
  [别看谁点 看写哪]
   
*: 一个静态方法被调用了 方法体当中没有任何办法得到调用方法的对象
  无论谁调用的方法 都等价于类名直接调用的
 
练习题:
一个向往美好的和尚 与 诸多动物一起旅游的故事

- 西游记
故事当中涉及到如下多个线程

有个师傅线程 打印999次 "Only You能伴我取西经"
有个悟空线程 打印888次 "俺老孙来也"
有个悟能线程 打印777次 "分行李吧 回高老庄"
有个悟净线程 打印666次 "大师兄不好了 师傅被妖怪抓走了"

*: 师傅天天逼逼叨叨特别烦人 请让他优先级最低
setPriority(1);
*: 猴哥想要给师弟们更多的表现机会 前三次获得时间片
  他会主动放弃   yield();  
*: 八戒很懒 干活之前先休眠300毫秒
sleep();
*: 悟净很依赖猴哥 猴子不死 他就不上
join();

线程类其它常用方法
0.setName() + getName(): 设置和得到线程的名字

1.static activeCount(): 得到程序当中所有活跃线程的总数
活跃线程:就绪+运行+阻塞
          Thread.activeCount()
*:能够协助程序员统计在线人数
                           
2.setDaemon(true): 设置线程成为守护线程
  守护线程:是为其它线程提供服务的
      当程序当中只剩下守护线程的时候
      守护线程会自行消亡
1> 守护线程通常都是无限循环 防止其过早消亡
2> 设置成为守护线程的操作必须早于它的start()
          否则不但会操作失败 还会导致运行时异常IllegalThreadStateException
3> 守护线程应该具有较低的优先级别 防止与核心业务抢时间片  
           
3.interrupt(): 中断线程的阻塞状态
et.interrupt();
          该方法出现在哪个线程当中 哪个线程就是当前主动出手的线程
  谁主动调用interrupt()方法 谁就是被打断阻塞状态的进程
 
4.static currentThread() : 获得当前正在执行的线程对象
1.可以在主方法当中用来获得主线程对象...
Thread zxc = Thread.currentThread();
2.可以出现在run()调用的其它方法中 用于获得当前线程是谁...
X.它不该直接出现在run()当中
因为得到的一定等价于this
5.CountDownLatch => CountDown 倒数(倒计时) Latch 插销(门闩)
构造方法:
CountDownLatch latch = new CountDownLatch(门上的插销个数);
传参指定总共设置多少个门闩
核心方法:
latch.await() : 等待开门(主动进入阻塞状态)
latch.countDown() : 打开一个插销

标签:调用,Thread,day4,线程,当中,阻塞状态,方法
From: https://www.cnblogs.com/zhaodenghui33/p/18183304

相关文章

  • QBXT五一集训DAY4笔记
    \(Day\)\(4\)图论图论主要分为\(4\)个方面1.最短路2.二分图匹配3.生成树4.强连通(这个超纲了,不讲)在介绍完理论知识后,我们会逐一讨论它们图图是由点和边构成的边又分为有向边和无向边,因此图可以分为有向图和无向图无向图的度指的是一个点连了多少条边有向图的入度指的......
  • 【未整合】数学 day4.2
    博弈论Nim游戏对于\(n=2\),\(a_1=a_2\),后手可以“模仿”先手,使得后手必胜。对于\(a_1\nea_2\),先手可以让自己进入“模仿期”,使得先手必胜。结论:若\(\oplusa_i=0\),先手必败,否则必胜。很神奇的东西,证明需要群论知识。发现石子的合并满足上面四条性质,所以石子的合并就是异......
  • 【未整合】数学 day4
    微积分导数对于\(f(x)\),其在某一点的导数,就是取一个极小的\(\delta\),\(f'(x)=\lim\limits_{\delta\rightarrow0}\frac{f(x+\delta)-f(x)}{\delta}\)。、“微小变化的放大倍数”。对导数的直观理解,就是当变化量极其微小的时候,\(dx\)与\(dy\)的关系。当Δ极小时,导数相......
  • 代码随想录算法训练营三刷day44 | 动态规划之 完全背包 518. 零钱兑换 II 377. 组合总
    三刷day44完全背包基础知识问题描述举个栗子518.零钱兑换II1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组377.组合总和Ⅳ1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例来推导dp......
  • 嵌入式学习Day4
    一、输入一个数判断是否回数代码:运行结果:二、输入一个数判断是否完美数代码:运行结果:三、图形打印打印以下两个图形  *       **** **       *** ***        ******         *代码:运行结果......
  • 云计算第1阶段_Linxu基础知识_day4
     1查看文件内容#1查看文件所有内容cat$path/$file.txt-n #显示行号-A #显示控制字符(空格、制表符),用于查看文件内容最后是否多出一些看不到的信息#2headhead$path/$file.txt #查看文件内容前10行head-n100$path/$file.txt #显示文件前100行内容#3tailtail......
  • Day4 我终于开始学习基础语法啦
    Day4java语法基础一、注释注释是在编写代码过程中的解释说明,一般分为单行注释在代码中用“//”来提出多行注释在代码中用“/*xxx*/”来提出(丫的不打空格typora直接给我加粗)文档注释在代码中用“/**xxx直接加上回车即可附今天的代码内容publicclassHell......
  • Day49:WEB攻防-文件上传&存储安全&OSS对象&分站&解析安全&解码还原&目录执行
    目录文件-解析方案-目录执行权限&解码还原目录执行权限解码还原文件-存储方案-分站存储&OSS对象分站存储OSS对象存储知识点:1、文件上传-安全解析方案-目录权限&解码还原2、文件上传-安全存储方案-分站存储&OSS对象文件-解析方案-目录执行权限&解码还原1......
  • 【WEEK4】 【DAY4】AJAX - Part One【English Version】
    2024.3.21ThursdayContents8.AJAX8.1.Introduction8.2.Simulatingajax8.2.1.Createanewmodule:springmvc-06-ajax8.2.2.Addwebsupport,importpomdependencies8.2.2.1.Modifyweb.xml8.2.2.2.Createajspfolder8.2.3.CreateapplicationContext.xml......
  • LeetCode刷题记录——day4
    https://leetcode.cn/problems/trapping-rain-water/description/?envType=study-plan-v2&envId=top-interview-150对于一个可以构成“碗”的序列,最后装满水的话应该和最短的一边齐平,那么可以左右各遍历一次,记录每个元素位置对应的最短边高度,再对比就可以得出左右哪边最短class......