- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
j的ava中的线程
线程与进程1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境2 进程:执行中的程序一个进程至少包含一个线程3 单线程:程序中只存在一个线程,实际上主方法就是一个主线程4 多线程:在一个程序中运行多个任务目的是更好地使用CPU资源一.线程的生命周期及五种基本状态线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。1.新建状态(New):??当用new操作符创建一个线程时, 例如new Thread(r),线程还没有开始运行,此时线程处在新建状态。 当一个线程处于新生状态时,程序还没有开始运行线程中的代码?2.就绪状态(Runnable)?一个新创建的线程并不自动开始运行,要执行线程,必须调用线程的start()方法。当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态。?处于就绪状态的线程并不一定立即运行run()方法,线程还必须同其他线程竞争CPU时间,只有获得CPU时间才可以运行线程。因为在单CPU的计算机系统中,不可能同时运行多个线程,一个时刻仅有一个线程处于运行状态。因此此时可能有多个线程处于就绪状态。对多个处于就绪状态的线程是由Java运行时系统的线程调度程序(thread scheduler)来调度的。?3.运行状态(Running)?当线程获得CPU时间后,它才进入运行状态,真正开始执行run()方法.?4.?阻塞状态(Blocked)?线程运行过程中,可能由于各种原因进入阻塞状态:?1线程通过调用sleep方法进入睡眠状态;?2线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者;?3线程试图得到一个锁,而该锁正被其他线程持有;?4线程在等待某个触发条件;?......?所谓阻塞状态是正在运行的线程没有运行结束,暂时让出CPU,这时其他处于就绪状态的线程就可以获得CPU时间,进入运行状态。?5.?死亡状态(Dead)?有两个原因会导致线程死亡:?1) run方法正常退出而自然死亡,?2) 一个未捕获的异常终止了run方法而使线程猝死。?为了确定线程在当前是否存活着(就是要么是可运行的,要么是被阻塞了),需要使用isAlive方法。如果是可运行或被阻塞,这个方法返回true; 如果线程仍旧是new状态且不是可运行的, 或者线程死亡了,则返回false.二. Java多线程的创建及启动1.继承Thread类,重写该类的run()方法。class MyThread extends Thread { private int i = 0; @Override public void run() { for (i = 0; i 100; i++) { System.out.println(Thread.currentThread().getName() + + i); } }}public class ThreadTest { public static void main(String[] args) { for (int i = 0; i 100; i++) { System.out.println(Thread.currentThread().getName() + + i); if (i == 30) { Thread myThread1 = new MyThread(); // 创建一个新的线程 myThread1 此线程进入新建状态 Thread myThread2 = new MyThread(); // 创建一个新的线程 myThread2 此线程进入新建状态 myThread1.start(); // 调用start()方法使得线程进入就绪状态 myThread2.start(); // 调用start()方法使得线程进入就绪状态 } } }}继承Thread类,通过重写run()方法定义了一个新的线程类MyThread,其中run()方法的方法体代表了线程需要完成的任务,称之为线程执行体。当创建此线程类对象时一个新的线程得以创建,并进入到线程新建状态。通过调用线程对象引用的start()方法,使得该线程进入到就绪状态,此时此线程并不一定会马上得以执行,这取决于CPU调度时机。实现Runnable接口,并重写该接口的run()方法,该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为Thread类的target
您可能关注的文档
最近下载
- 2021年江苏富轩实业有限公司招聘试题及答案解析.docx VIP
- 钢结构工程施工质量验收标准(GB 50205-2020)(2).docx VIP
- 三往返行程问题.pdf VIP
- 《红楼梦》知识学习考试题库100题(含答案).pdf VIP
- 13.1三角形的概念 课件(共24张PPT) 人教版(2025)数学八年级上册(含音频+视频).pptx VIP
- 数字人事试试试题库.pdf VIP
- 广东省潮州市湘桥区2024-2025学年五年级下学期期末数学试题.docx
- 库存管理与控制课件.pptx VIP
- 村文书面试试题及答案.doc VIP
- 初三语文九年级上下册古诗词硬笔描红字帖.pdf VIP
文档评论(0)