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

梧州做网站建设/苏州疫情最新消息

梧州做网站建设,苏州疫情最新消息,怎样用网站做淘宝推广,优秀网站h5案例分享线程不是进程 作为有一定开发经验的程序员来说,在java中实现多线程是一件很容易的事情,你只需要将你的类继承Thread类或者实现Runnable接口就可以。其实线程完全可以理解为一个任务。可以同时运行多个任务的程序,就成为多线程程序。 然而线程…

线程不是进程

作为有一定开发经验的程序员来说,在java中实现多线程是一件很容易的事情,你只需要将你的类继承Thread类或者实现Runnable接口就可以。其实线程完全可以理解为一个任务。可以同时运行多个任务的程序,就成为多线程程序。

然而线程并非进程。进程包括线程,每一个进程都拥有一套自己的变量,而线程间则共享这套变量。从而带来了很多风险,比如最典型的脏数据。这些以后会讨论。

线程状态

java中,线程被定义成有6中状态:

l   NEW: 至今尚未启动的线程处于这种状态。 即刚刚new出来的Thread,但是还未调用start()方法。

l   RUNNABLE: 正在 Java 虚拟机中执行的线程处于这种状态。 该状态是调用了start()方法后的状态,出于该状态的线程不一定是正在运行的,他有线程调度器来决定是否运行。

l   BLOCKED: 受阻塞并等待某个监视器锁的线程处于这种状态。 阻塞与等待不同,阻塞通常是得不到所需要的资源而被迫停下来等待。

l   WAITING: 无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。

l   TIMED_WAITING: 等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。

l   TERMINATED: 已退出的线程处于这种状态。有两种情况会让线程退出,其一是run方法中的任务执行完成,其二是线程执行时出现异常。

 

java的线程状态只有如上6中,他们以enum形式被定义在Thread.State中。这里要说一下等待状态,有很多方式能够让线程进入等待状态,比如调用join()方法。

 

join()

对于这个方法,还是要特别的强调一下。在api中的解释如下:Blocks the current Thread (Thread.currentThread()) until the receiver finishes its execution and dies.翻译过来就是:阻塞当前线程,然后让接受者完成任务之后,当前线程才开始继续执行任务。

但是如果接受者在被调用了join方法后,有被调用了interrupt()方法,则会抛出java.lang.InterruptedException异常。

 

interrupt()与中断线程

开发时常常需要用到中断线程,在早期的java版本中,有stop()等方法用来控制线程生死,当时这些方法现在已经废弃,具体愿意以后会谈,同时亦可以参考sun的一片文章《Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated?》网址如下:

http://download.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html

当然,jdk还是为我们提供了强化终止线程的方法。然而,interrupt方法只是可以用来请求终止线程。当对一个线程调用interrupt方法之后,线程的中断状态将被置位。每一个线程都具有一个中断状态,他是一个boolean标志。在实现自己的线程时,应该实时检查该标志,以判断线程是否被中断。

可以通过Thread.currentThread()方法得到当前线程,然后通过is isInterrupted()方法,来查看中断状态。通常如下实现:

while (!Thread.currentThread().isInterrupted() && 。。。) {}

 

interrupted()isInterrupted()

这两个方法看上去很像,作用也相似可以通过下表来比较两种异同。

 

是否是static

返回值

不同

interrupted

当前的中断状态

调用后改变中断状态

isInterrupted

不改变

 

线程属性----线程优先级

 

谈优先级可能并不陌生,在java中,每一个线程都有一个优先级。默认情况下,一个线程的优先级直接继承自他的父类。sunjava的优先级分成10级,1表示最小优先级,10表示最高优先级。同时jdk中还定义了3个常量MIN_PRIORITY(1)MAX_PRIORITY(10)NORM_PRIORITY(5)

线程的优先级是依赖与平台的,windows中有7个优先级。而在Linux中,java虚拟机将线程的优先级忽略,即所有线程的优先级都一样。所以在编写程序是,尽量不要依赖于优先级。

setPriority()方法,顾名思义就是设置优先级的。

 

yield()

yield的中文意思是:屈服。其实理解成让步更加准确。调用该方法,将导致当前执行线程出于让步状态。如果此时有其他线程一起来抢夺cpu资源,那么只要这个抢夺的线程的优先级不低于调用线程。则抢夺线程将会被调用。

线程属性----守护线程

守护线程的用途就是为其他线程提供服务。当被服务者死亡后,其也就没有存在的价值,也就跟着去死了。设置守护线程很简单:

setDaemontrue

只需一步,轻松搞定。在使用守护线程时需要记住,永远不要去访问固有资源,如文件、数据库等。以为你不知道什么时候守护线程会结束。

 

http://www.lbrq.cn/news/99901.html

相关文章:

  • wordpress 全站 下载/网络营销方式对比分析
  • 微企免费网站建设/seo做关键词怎么收费的
  • ps做网站 字体多大/网站的推广方法
  • 家乡网站建设策划书模板/口碑营销策略
  • 视频剪辑找什么公司/免费seo网站诊断
  • wordpress多站用户/百度网盘客服电话
  • wordpress标签无法显示/seo营销推广多少钱
  • 音乐网站可以用什么语言做/免费b站推广网站2022
  • 专业做网站推广/站长工具使用
  • 产品推广方案范本3篇/太原seo顾问
  • 广告推广的好处/惠州百度关键词优化
  • 网站建设佰首选金手指六/百度搜索词热度查询
  • 个人专属logo设计/信息流优化师简历模板
  • wordpress keywords 用逗号 区分关键字/重庆seo全面优化
  • 四川省人民政府网站集约化建设/公关公司一般收费标准
  • 小型公司网站建设/广州番禺发布网
  • 有没有专门做衣服搭配的网站/注册百度推广账号
  • 网络销售怎么做才能有业务/蜘蛛seo超级外链工具
  • 外贸网站建设海外推广/外贸seo推广招聘
  • 网站制作常见的问题/口碑营销案例
  • 如何做区块链网站/百度精准营销获客平台
  • 做新媒体广告的网站/自己网站怎么推广
  • 做免费小说网站怎样赚钱/如何制作付费视频网站
  • 无锡公司网站制作/重庆关键词快速排名
  • 注册咨询公司/宁波seo排名优化培训
  • 北京建设工程信息网网站/爱站网站排行榜
  • 郑州做品牌网站的公司/黑河seo
  • 做淘宝这种网站/大数据营销专业
  • 动图在线制作网站/seo教程排名第一
  • 广西网络公司网站建设/网站seo需要用到哪些工具
  • 使用tauri打包cocos小游戏,并在抖音小玩法中启动,拿到启动参数token
  • SRE系列(二) | 从可用性到 SLI/SLO
  • gRPC 与 HTTP 性能对比分析
  • 8.21IPSEC安全基础后篇,IKE工作过程
  • C++---滑动窗口平滑数据
  • 全文 part1 - DGEMM Using Tensor Cores, and Its Accurate and Reproducible Versions