网站大量收购闲置独家精品文档,联系QQ:2885784924

Java面向对象程序设计完整版课件全套ppt教学教程电子教案讲义最全最新.ppt

Java面向对象程序设计完整版课件全套ppt教学教程电子教案讲义最全最新.ppt

  1. 1、本文档共300页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
原创完整版课件全套ppt完整版电子课件完整版电子讲义完整版电子教案全套课件全套ppt教学教程

运行结果 ******************************************************************* 老兵带你分析代码 在safe()方法上添加了关键字synchronized,此时safe()方法就是同步方法,同一个时刻只运行一个线程调用该方法,如果多个线程都在方法该方法,其它线程需要等待正在调用该线程的方法调用结束后再进入该方法。 synchronized关键字相当于为safe()方法添加了一把锁头,只有拿到钥匙的线程才能访问该方法。本例中safe()方法是静态方法,那么钥匙就是当前类的元数据,即ThreadSafeDemo1.calss,由于当前类的元数据只有一个,因此钥匙只有一把,不会造成非线程安全。 如果safe()是实例方法,那么钥匙就是调用safe()方法的对象,而对象可以创建多个,导致钥匙有多把,也可能造成非线程安全。 任务6:实例方法的非线程安全 import java.util.ArrayList; class TheThread2 extends Thread { public void run() { /* ** * main方法中每循环一次,就创建了一个子线程,每个子线程都创建一个tsd对象 * tsd对象调用safe()方法,由于safe()方法是实例方法,因此所有的tsd对象都是 * 钥匙,导致多个线程同时访问safe()方法,造成非线程安全 * */ ThreadSafeDemo2 tsd =new ThreadSafeDemo2(); tsd.safe(); } } public class ThreadSafeDemo2 { public static ArrayList list = new ArrayList(); public static ArrayList list = new ArrayList(); public synchronized void safe() { list.get(0); list.clear(); list.add(test); System.out.print(*); } public static void main(String[] args) { list.add(test); for (int i = 0; i 10000; i++) { TheThread2 thread = new TheThread2(); thread.start(); } System.out.println(执行完成!); } } **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************Exception in thread Thread-412 *****java.lang.IndexOutOfBoundsException: Index: 0, Size: 1 * at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at t.ThreadSafeDemo2.safe(ThreadSafeDemo2.java:19) at t.TheThread2.run(ThreadSafeDemo2.java:13) ************************************************** 运行结果 为了避免实例方法可能有多个对象实例对象造成非线程安全,可以把造成非线程安全的代码放在同步块中,同步块声明格式如下 synchronized(loc

文档评论(0)

BLUED + 关注
实名认证
内容提供者

教师资格证持证人

全网 内容最全课件 价格最低 质量最高 不是之一,是唯一。 每个人使用的办公软件版本不一样,如有个别显示不出的文件,建议使用最新版。

版权声明书
用户编号:8070063100000015
领域认证该用户于2023年03月20日上传了教师资格证

1亿VIP精品文档

相关文档