当前位置: 首页 > wzjs >正文

那个网站可以做双色球号码对比的如何做好企业网站的推广

那个网站可以做双色球号码对比的,如何做好企业网站的推广,qq同步wordpress,最近国际局势最新消息乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 ,Java 欢迎大家访问~ 创作不易,大佬们点赞鼓励下吧~ 文章目录 前言认识多线程(Thread的…

乐观学习,乐观生活,才能不断前进啊!!!

我的主页:optimistic_chen

我的专栏:c语言 ,Java

欢迎大家访问~
创作不易,大佬们点赞鼓励下吧~

文章目录

  • 前言
  • 认识多线程(Thread的常见属性)
  • 线程启动 - start()
  • 线程终止
  • 线程等待
  • 线程状态
    • NEW
    • TERMINATED
    • RUNNABLE
    • TIMED_WAITING
    • WAITING
  • 完结

前言

既然有多线程,那么是不是也应该有单线程?答案是肯定的。其实单线程也叫进程,由上篇博客知道,进程中有多个线程,那么只有一个线程的进程就是单线程。我们的main主线程,之前的认知,main方法执行完毕,程序(进程)就结束了,那是因为之前没有接触到多线程程序,这篇博客将为我们认识多线程。。。

认识多线程(Thread的常见属性)

IDgetId()
名称getName()
状态getState()
优先级getPriority()
是否为后台线程isDaemon()
是否存活isAlive()

java中给每个运行的线程分配id,表示身份,不同线程不会重复
线程名称就是你给线程起名字。
线程状态后面会说到,表示当前线程所处的状态。
优先级顾名思义,优先级高的线程更容易被调度到。
那么什么是后台线程呢?是不是还有前台线程

Daemon -> 守护 “守护线程”==“后台线程”

JVM中自带的线程,他们的存在不影响进程结束(即使这些线程继续运行,但是进程要结束,他们也一起结束),这种就是后台线程。

前台线程

在多线程程序中,如果线程1结束了,但是线程2或者线程3还在运行,进程依旧存在。线程2,线程3能影响到 进程继续存在,这样的线程就是前台线程。(我们写的代码包括main主线程默认都是前台线程)

<举个例子>我们在吃席的时候,我吃饱了,整个活动还没有结束,我可以偷偷溜走,对整个活动没有影响,那么我就是后台线程:活动主持人说:活动结束,代表整个活动结束,这个时候主持人才是前台线程。整个活动像我一样的人有多个,主持人也可能有多个,这就是多线程。

JVM会在一个进程的所有非后台线程结束后,才会结束进程。

线程存活就是run方法运行结束。

Java代码中创建的Thread对象,和系统中的线程是一一对应的关系,但是Thread对象的生命周期和系统中的线程的生命周期是不同的。

在这里插入图片描述
这个代码的逻辑:3s后系统中线程就结束了,但是观察结果:
在这里插入图片描述
有四个true,根本原因是:t线程结束与第四次结果,不一定谁先谁后!是操作系统随机调度。

线程启动 - start()

上篇博客我们已经知道如何创建一个线程对象,但是线程对象被创建出来并不代表这线程就开始运行,你还需要调用一个方法start(),“动起来”。

这个方法是java标准库/JVM提供的方法,本质上是调用操作系统的API…

只有调用start(),才真的在操作系统底层中创建出一个线程。
在这里插入图片描述

每个Thread对象,都只能start一次。

线程终止

Thread 内部包含了⼀个 boolean 类型的变量作为线程是否被中断的标记

lambda这里的定义是在new Thread之前,也是在Thread t之前,所以需要引用来调用方法

public static Thread currentThread();//哪个线程调用这个方法,返回这个线程的引用(类似this) >

在这里插入图片描述
通过isInterruoted()方法判断当前线程是否被终止了
在这里插入图片描述
注意:t.interrupt();主动去终止线程
这种⽅式通知收到的更及时,即使线程正在 sleep 也可以⻢上收到。

注意:正常来说:调用interrupt方法就会修改isIntegerruptted方法内部的标志位设为true,由于把sleep唤醒了,sleep内部就会把isIntegerruptted标志位改为false.这个时候的结果就是这样:
在这里插入图片描述
程序没有终止,还在执行

Java中线程终止,不是“强制性”d的措施,选择权还在被终止的线程手上(catch),主要看线程t的代码怎么写

线程等待

多线程之间 并发执行 ,意味着资源就随机调度的,这对我们程序员很不友好,要考虑的因素太多了;但是join()方法能够解决多个线程之间结束的先后顺序问题。

public static void main(String[] args) throws InterruptedException {Thread t=new Thread(()->{for(int i=0;i<3;i++){System.out.println("hello Thread");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("t线程结束");});t.start();t.join();//main线程“阻塞等待”,等待 t 线程执行完毕System.out.println("main线程结束");}

在main线程中,调用t.join()
效果:让 main 线程等待 t 线程结束

在这里插入图片描述
这就意味着只要 t 线程不结束,main就只能一直等待,这明显不符合计算机的初衷。这个时候就需要一个“最大等待时间"。

public static void main(String[] args) throws InterruptedException {Thread t=new Thread(()->{for(int i=0;i<3;i++){System.out.println("hello Thread");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("t线程结束");});t.start();t.join(2000);//最多等待2sSystem.out.println("main线程结束");}

在这里插入图片描述

线程状态

在操作系统的角度去看待线程,无非就是就绪状态和阻塞状态~~
Java线程其实是操作系统对线程的封装。但是Java中针对状态,也进行了封装,为了观察线程处于什么状态,我们可以使用state表示…

遍历线程状态…
在这里插入图片描述

public class Demo4 {public static void main(String[] args) {for(Thread.State state:Thread.State.values()){System.out.println(state);}}
}

得到一下几种状态

NEW:有工作,但是还没有动起来
RUNNABLE:可工作,可以表示在工作中,也可以表示即将开始工作
BLOCKED:排队等待(比较特殊,由锁导致的阻塞)
WAITING:排队等待
TIMED_WAITING:排队等待
TERMINATED:工作完成

NEW

线程开始状态,此时是new了一个Thread对象,还没有start()
在这里插入图片描述

TERMINATED

线程已经结束,但是Thread对象还在(要是 t 不在了,那么这个状态应该是显示不出来才对,而现在可以正常打印出TERMINATED状态)
在这里插入图片描述

RUNNABLE

此时线程一直处于工作状态,注意右上角的运行标志,可以知道,线程一直未结束。
在这里插入图片描述

TIMED_WAITING

此状态表示阻塞,细化说就是:指定时间阻塞。
在这里插入图片描述

有时候A线程需要等待B线程的运行结果,但是可能B线程陷入死循环,那么A线程要不要一直等待B线程的结果呢?

当然不用,在最大等待上限结束后,直接结束 B线程

线程状态之间来回切换
在这里插入图片描述

WAITING

与TIMED_WAITING状态很相似,但是比TIMED_WAITING要死板。
TIMED_WAITING指定了等待时间,但是WAITING只是死等(没有超时间的阻塞等待)
在这里插入图片描述

此时main线程在等待t线程执行完毕
由Java管理后台可以看到,此时main线程处于WAITING状态,死等。
在这里插入图片描述

总结:多线程中,理解线程状态是至关重要的,是帮助程序员调试代码的关键
在这里插入图片描述

完结


可以点一个免费的赞并收藏起来哟~
可以点点关注,避免找不到我~ ,我的主页:optimistic_chen
我们下期不见不散 ~ ~ ~

http://www.dtcms.com/wzjs/226540.html

相关文章:

  • 深圳专业商城网站设计制作网站建设制作专业
  • 镇江牛吧企业网站建设与推广公司seo推广排名
  • 虚拟网站免费注册营销网站建设价格
  • 网站信息内容建设实施办法网站开发流程的8个步骤
  • 阿里服务器怎么做网站服务器吗浙江疫情最新情况
  • 网站颜色表郑州百度seo排名公司
  • 青岛开发区网站建设多少钱青岛关键词排名系统
  • 珠海建设网站的公司哪家好免费自助建站网站
  • 华人博学网站建设公司厦门seo外包服务
  • 百度怎样才能搜到自己的网站别做网络推广员
  • 安徽省建设项目 备案网站淘宝seo搜索引擎优化
  • 福建微网站建设公司推荐公众号软文推广多少钱一篇
  • 亚马逊网站开发者平台如何做网站推广
  • PHP网站建设项目经验军事新闻头条
  • 帮别人做钓鱼网站吗文娱热搜榜
  • 网站设计的软件青岛网络优化厂家
  • 永州市开发建设投资有限公司网站镇江百度公司
  • 代写网站建设合同长沙网站推广公司
  • 自己怎么1做网站seo关键词优化最多可以添加几个词
  • 针对人群不同 网站做细分友情链接代码
  • 网站策划书基本项目上海不限关键词优化
  • 河南做网站哪个公司好班级优化大师网页版登录
  • 金属建材企业网站建设方案可以免费发广告的网站
  • 沧州网站改版优化上海网络推广培训学校
  • 哪个网站做批发的哈市今日头条最新
  • 富阳网站开发网络营销的特点有哪些特点
  • 建个网站能赚钱吗谷歌浏览器官网入口
  • 企业网站不足百度seo站长工具
  • 加油站顶棚网架价多少钱一平企业营销策划论文
  • 有哪个网站专业做漫画素材的搜索引擎推广成功的案例