- 1
- 0
- 约3.83千字
- 约 50页
- 2018-06-30 发布于四川
- 举报
java实用程序设计(西电版)第十章java线程
10.1 并发的基本思想 在深入多线程程序设计之前,读者需要了解并发的基本思想和动机。并发的第一个动机在一些操作系统原理书籍中经常被提及,即并发能够为单处理器上的程序提供性能的提升。表面上看,单处理器上运行并发程序引入了上下文切换的开销,似乎应比同样功能的顺序程序执行得慢。但在实际系统中存在阻塞的情况。也就是说,程序中的某个任务可能会被程序控制范围外的某些条件(如输入/输出)阻塞而不能继续执行。 10.2 Java的基本线程机制 一个线程是在进程中的一个单一的顺序执行流。每一个线程都能够驱动一个独立的子任务。CPU会为每个任务分配其占用CPU的时间,程序不需要知道CPU的数量及它所占用的CPU时间。Java的线程模型可以看做是CPU、代码和数据的封装体。线程模型的CPU可以看做是线程在占用CPU时CPU的状态;代码即CPU所执行的代码,可以由多个线程共享;数据包括线程独有数据(程序计数器、栈)和共享数据(如堆上的对象)。 1. 创建线程 线程的创建通常可以通过两种方式完成:实现Runnable接口和继承Thread类。Runnable接口是java.lang包中定义的一个接口,该接口包含唯一的抽象方法run()。Thread类则是创建线程的基础类。Thread类的构造方法可以传入三类参数:ThreadGroup类型的参数指明新线程所处的线程组;String类型的参数指明新线程的名称;Runnable接口类型的参数所指向的对象类型决定了线程的具体行为。 当通过实现Runnable接口来创建线程时,要完成以下工作: (1) 定义一个类,该类实现Runnable接口,即在该类中提供run()方法的具体实现; (2) 将该类的一个实例对象(可称为任务)传递给Thread类的构造方法构造线程对象。 当通过继承Thread类的方法创建线程时,应通过以下两步: (1) 从Thread类派生出子类,并通过重写子类的run()方法提供线程体; (2) 通过创建子类的对象创建线程。 2. Executor Executor是J2SE 5.0中引入的执行器接口,它存在于java.util.concurrent包中。Executor可以帮助用户管理线程对象,从而简化编程开发。Executor将主线程与所有任务线程分隔开,能够帮助主线程管理异步任务的执行,主线程不再需要显式地管理任务线程的生命周期。与传统的线程创建方法相比,Executor是一种更优的方式。 3. 线程优先级 线程的优先级将该线程的重要性传递给调度器。虽然CPU处理现有线程集合的顺序是不确定的,但调度器会倾向于让优先级较高的线程先执行。这并不代表优先级较低的线程将得不到执行,但是优先级较低的线程的执行频率会比较低。 4. 睡眠sleep()与让步yield() 在例10-1和例10-2中,我们都使用到了Thread类的静态方法sleep(),该方法能够将线程的执行暂停一段固定的时间,将CPU让给比当前线程优先级更低的线程。对sleep()的调用可能抛出InterruptedException异常,因为异常不能跨线程传播,因此必须在run()方法中加以捕获。 5. 加入一个线程join() 一个线程可以在另一个线程上调用join()方法。如果当前线程在另一个线程t上调用t.join(),那么当前线程将会被挂起,直到目标线程t结束(即t.isAlive()返回值为false)时才恢复运行。也可向join()加入一个超时参数,如果目标线程t在这段时间内还没有结束,join()总是可以返回。 例10-5 TestJoin.java:线程join()示例。 6. 终止线程 早期的Java版本提供stop()方法强行终止一个线程,该方法在终止线程时不释放线程获得的锁,因而容易导致线程不一致,故在现代Java中已经被废止。较为安全的方式是使用一个标志,并提供方法对标志进行操作,标志的值决定了是否终止某个任务。 10.3 资源共享与同步 多线程机制允许我们在同一时刻做多件事情,假设这些事情之间没有干涉,那么也不会有什么问题。但很多情况下,多个线程会共享一些资源或数据,当多个线程同时操作这一资源或数据时,线程运行顺序的不确定性会导致共享资源或数据的结果产生不确定性,共享数据的一致性可能被破坏。因此,在多线程机制中,必须考虑对线程进行同步,以防止此类不一致的情况发生。 1. 资源访问冲突 在例10-6的AddAccount类中,我们定义了一个由多个线程共享操作的静态Account类型的成员变量account,在main()方法中,通过并发执行10
您可能关注的文档
最近下载
- 雪地胎的选用与更换-2024年世界职业院校技能大赛一等奖展示PPT.pptx VIP
- 一种提高线性聚乙烯膜料耐候性及拉伸性能的复合助剂及其制备方法.pdf VIP
- 【新教材】人教版(2024)七年级下册英语教学计划.docx
- 2026年中国厨房剪市场调查研究报告.docx
- 第一单元第二课《山水合璧》教案 湘美版2025美术七年级下册.pdf
- 2026年月日历表 (每月一张 A4可打印).pdf VIP
- 智能体应用发展报告(2025).pdf VIP
- 企业微信使用管理规范及注意事项.docx VIP
- 基于ANSYS的感应加热数值模拟分析-机械制造及其自动化专业论文.docx VIP
- 2025年交通运输部所属事业单位招聘真题.docx VIP
原创力文档

文档评论(0)