10新多线程讲述.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1、构造方法 Thread类的构造方法很多,主要包括: n Thread ( ); n Thread ( Runnable target ); Thread (Runnable target, String name ); Thread (String name ); 2、主要方法 n int activeCount() //返回当前活动线程数 n Thread currentThread() //返回当前运行的线程 n String getName() //返回线程的名字 destroy() //破坏线程,但不进行清理 int getPriority() //返回线程的优先级 ThreadGroup getThreadGroup() //返回线程组名 1、继承Thread类创建线程 一般包括四步: 从Thread类派生一个类, extends 并覆盖Thread类中的run方法 创建该子类的对象 调用start方法启动本线程 2、实现Runnable接口 提供一个实现接口Runnable的类作为线程的目标对象。在初始化一个Thread类或子类生成线程实例时,把目标对象传递给这个线程实例,由该目标对象提供线程体run()方法。这时,实现接口Runnable的类还可以再继承其他类。 JAVA提供了三个方法实现进程的调度和通信。 wait() //等待,让当前线程放弃监视器并进入睡眠状态,直到其它线程进入同一监视器并调用notify为止。 notify () //唤醒,唤醒同一对象监视器中调用wait ()的第一个线程。 notifyall() //唤醒所有的线程,唤醒同一对象监视器中调用wait ()的所有线程,具有最高优先级的线程首先被唤醒。 10.2.2 线程的创建 Page 186 例 10-1 ThreadDemo1.java Page 187 例 10-2 ThreadDemo2.java 10.2.2 线程的创建 实现 Runnable 接口建立多线程的步骤 1. 定义一个实现了 Runnable 接口的类 2. 重载方法 Run(), 3. 创建该类的一个实例,作为目标对象传给4 new 4. 创建Thread类的一个实例,new 5. 启动线程 start() 10.3 线程的创建 Page 188 例 10-3 ThreadDemo3.java 10.3 线程的同步与死锁 同一个进程的多个线程共享同一内存空间,而线程调度是抢占式的,这样就会带来冲突问题。 比如:有一个银行帐号,存款余额是8000元,用户A持有信用卡,用户B持有存折,如果同一时间都要求取款5000元,我们看会出现什么情况。 10.3 线程的同步与死锁 更新:3000-5000 = -2000 T4 更新 8000-5000 = 3000 T3 取5000 T2 取5000 T1 B存折 A 信用卡 时间片 取款的步骤分为两步 1 :取款 2:更新帐户余额 10.3 线程的同步与死锁 产生负数余额的原因是:取款过程的两步分开执行。针对这个问题,我们可以将取款过程的两个动作锁定,即放入同步代码中,直到两步都执行完才能允许其他线程执行,这就是线程的同步。 Java提供了同步方法和同步代码块两种处理方式。 synchronized void myMethod() { // Mothod body } 线程A在执行一个同步方法前,必须获得相应对象或类的锁,如果同时另外一个线程B正在执行 这个同步方法,则线程A将被阻塞。 这种同步机制确保了同一时刻对于同一个类的不同对象,synchronized方法成员至多有一个处于运行状态,避免了对资源的冲突访问。 10.3.1 Synchronized同步方法 10.3.1 Synchronized同步方法 Page 190 例 10-4 ThreadSyncDemo1.java synchronized ( myObject ) { //Functionality that need //to synchronized } synchronized同步块中的代码必须获得syncObject(可以是类或者实例)的锁后才能执行,管理机制与同步方法相同。 10.3.2 Synchronized同步代码块 10.3.2 Synchronized同步代码块 Page 190 例 10-5 Threa

文档评论(0)

有一二三 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档