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

网站建设空间是指什么软件中关村标准化协会

网站建设空间是指什么软件,中关村标准化协会,鱼台做网站多少钱,怎么查询网站是谁做的目录 Thread类的属性 1.Thread 的常见构造方法 2.Thread 的几个常见属性 2.1 前台线程与后台线程 2.2 setDaemon() 2.3 isAlive() Thread类的属性 Thread 类是JVM 用来管理线程的一个类,换句话说,每个线程都有一个唯一的Thread 对象与之关联&am…


目录

Thread类的属性

1.Thread 的常见构造方法

2.Thread 的几个常见属性

2.1  前台线程与后台线程

2.2  setDaemon()

2.3  isAlive()


Thread类的属性


  • Thread 类是JVM 用来管理线程的一个类,换句话说,每个线程都有一个唯一的Thread 对象与之关联;
  • 每个执行流,也需要有一个对象来描述;
  • Thread类的对象就是用来描述一个线程执行流的,JVM会将这些Thread对象组织起来,用于线程调度,线程管理。


1.Thread 的常见构造方法


方法说明
Thread()
 
创建线程对象,必须要重写 Thread类 的 run()方法
 
Thread(Runnable target)

使用 Runnable 对象创建线程对象

【不用重写 Thread类 的 run()方法】

Thread(String name)

创建线程对象,并命名
 

Thread(Runnable target,String name)

使用 Runnable对象创建线程对象,并命名

    Thread(ThreadGroup group, Runnable target)

线程可以被用来分组管理,分好的组即为线程组

【这个目前我们了解即可】


对于 Thread类 的第四种构造方法,第一个参数传的是lamda表达式,lamda相当于Rannable;

再传入的第二个参数,就是这个线程的名字,需要手动添加 “  ” 

如果要调用:带有 自定义线程名字 的参数 的 构造方法,无论自定义的名字是什么,都不会不影响线程的执行的;为了方便程序员调试,可以给线程起名字。

程序运行后,我们可以通过 jconsole 这个工具,在线程列表中,看到自定义名字,并且正在运行的线程。除了自定义的线程,线程列表中的线程是JVM提供的线程。


如果我们不定义名字,程序调用 Thread类 的第一个构造方法,在jconsole的线程列表中,我们可以发现,如果不自定义线程名,系统会使用默认线程名 Thread - 数字 来命名线程。


如果在一个进程中有多个线程,这些线程,会被CPU随机调度,并发执行;

所以不一定会因为主线程结束,整个进程也跟着结束


2.Thread 的几个常见属性


属性
 
获取方法
 
ID
【线程的唯一标识,不同线程不会重复】
getId()
 
名称
【各种调试工具都会用到】
getName()
 
状态
【表示线程当前所处的一个情况】
getState()
 
优先级
【优先级高的线程理论上来说更容易被调度到】
getPriority()
 
是否后台线程
JVM会在一个进程的所有非后台线程结束后,才会结束运行
isDaemon()
 
是否存活
【简单的理解为,run() 是否运行结束了】
isAlive()
 
是否被中断
 
isInterrupted()

2.1  前台线程与后台线程


如果在程序运行的过程中,我们通过 jconsole 查看线程列表中没有main,说明主线程已经结束;

主线程结束,但是 t1,t2,t3 还在,使用进程还在;说明 t1,t2,t3 能够影响进程是否终止。

所有类似 t1,t2,t3 这样能够有效进程存在的线程,称为 “前台线程”。

程序员通过代码创建的线程 和 主线程,都默认是前台线程。

总结:

  1. 能影响进程存在的,是前台线程;不能影响进程存在的,是后台线程;
  2. JVM会在一个进程的所有非后台线程结束后,才会结束运行

2.2  setDaemon()


程序员通过编写代码,创建的线程,包括main主线程,默认都是前台线程;

但是可以通过setDaemon(),将  前台线程 修改成 后台线程~~ 

上述代码的逻辑:主线程和 t 线程并发执行,并且主线程在打印三次“ hello main ”后,打印结束日志,而 t 线程继续执行死循环,所以进程没有因为主线程终止而结束

所以,t 线程是一个前台线程,我们可以通过 isDeamon() 将 t 设置成后台线程;

通过 t.isDaemon(true) ,把 t 线程 从前台线程设置成后台线程;

此时,代码中只有主线程一个前台线程,所以在主线程运行结束后,整个进程结束,t 线程的死循环也被迫结束。

拓展:

进程与进程之间存在父子关系,而线程与线程之间则不存在;比如:

IDEA 本身也是一个 Java 进程;在 IDEA 中运行一个 Java  代码,通过IDEA 进程,又创建出一个新的Java 进程,这俩进程之间就是父子关系。


 2.3  isAlive()


Java 代码中创建的Thread对象,和系统中的线程,是一 一对应的关系;

但是,Thread 对象 的生命周期,和 系统中的线程 的生命周期,是不同的~~

(可能存在:Thread对象 还存活,但是 系统中的线程 已经销毁 的情况) 

我们引入一段代码,来看看"Thread对象还存活,但是系统中的线程已经销毁的情况"这种情况:

这个代码的逻辑:

前三秒 sleep1000毫秒 t线程的状态都是alive的状态,三秒后执行结束,t线程的isalive状态为false

线程的入口方法里的逻辑结束了,系统中对应的线程也就随之销毁了(操作系统) ;

虽然系统中的线程已经销毁,但是 Thread对象 还存活;

因此,t线程 被销毁,但是 t 这个对象依旧存在,所以才能一直通过t对象,调用isAlive方法


再多执行几次上述代码,发现程序运行结果中的 true 的个数是 3 还是 4 不固定,这是线程随机调度造成的: 

主线程第四次打印,和 t线程 的结束,谁先谁后,是不一定的;

如果打印 true 的次数为4,说明在 第四次 主线程 和 t线程 并发执行的顺序是:

  1. 先执行主线程中的打印 t.isAlive
  2. 然后才执行 t线程 中的循环判断是否结束

所以 打印的第一个 false 是第五次执行线程,此时 t 线程已经凉透了~~


http://www.ds6.com.cn/news/14883.html

相关文章:

  • 专做美妆的网站成都高端企业网站建设
  • 合肥有哪些公司是做网站的百度网盘网页登录入口
  • 郑州做网站建设公司哪家好快速排序优化
  • 企业做网站排名seo关键词使用
  • 做网站用什么云服务器吗全网营销系统怎么样
  • 设计公司品牌网站举三个成功的新媒体营销案例
  • 网站首页做多大分辨率湖北网络推广seo
  • 日照网站开发建设北京seo优化排名
  • 网站建设中的财务预算搜索引擎推广渠道
  • 目前网站开发语言投稿平台
  • 做网站宣传图片重庆网站seo教程
  • 大学生个人网站制作最新实时新闻
  • 网站开发32位和64位广州seo托管
  • 男的怎么做直播网站今天的头条新闻
  • 专门做活动的网站建网站设计
  • 江苏建设人才考试网是啥网站seo网络培训机构
  • 百度安全网站检测网站案例分析
  • 请举例说明什么是网络营销南京百度seo公司
  • 东莞网站建设dgtenma百度搜索排行
  • 腾讯云学生怎么做网站的企业网站的搜索引擎推广与优化
  • 中海外交通建设有限公司网站网络营销策划书的结构是什么
  • 手机微网站制作系统浏览器打开网站
  • 网站建设与网页设计实训报告怎么弄属于自己的网站
  • 佛山中英文网站制作黄冈网站推广策略
  • 做网站如何收费免费发帖的网站
  • 专注新乡网站建设网络营销的作用和意义
  • 自己建设的网站靠谱吗如何在网上推广自己的产品
  • 做网站设计的公司有哪些免费引流人脉推广软件
  • 网站维护都要做什么深圳网站建设找哪家公司好
  • 尉氏做网站谷歌官网首页