java课程论文_Java课程论文.doc
Java课程论文
Java课程总结
11级计本(2)班 1104012006 齐先鹏
一、 多线程是指同时存在几个执行体, 按几条不同的执行路线共同工作的情况。Java是通过多线程运行机制来支持多任务和并行处理的。Java的多线程机制使得编程人员可以很方便地开发出具有多线程的功能, 能同时处理多个任务的功能强大的应用程序。
二、 Java的多线程机制
要编写安全高效的多线程程序必须全面理解JAVA 的多线程机制, 掌握线程的控制方法, 同时要解决好线程的同步。
(一) J ava中线程的
在 Java 程序中可以通过对 Thread 类的继承派生一个子类,; 也可以直接定义一个接口 Runnabl e, 然后再由这个。 Thread 对象或 Runnabl e接口中的方法 run( )定义了相关的操作, 被称为线程。
() 线程间的同步
一个 Java程序的多线程之间可以共享数据, 这就产生了同步的问题。 假如两个线程 A 和 B 同时访问同一个数据对象, 线程 A 读这个数据对象, 而线程 B 写这个数据对象, 或者两个线程同时改写了这个数据对象,就会导致诸如一致性、数据丢失等问题。 这些问题在一些实际应用中如银行系统、 电脑订票系统中尤其致命。 可见, 线程同步是多线程编程的一个相当重要的技术。Java提供了一套同步化的机制, 其基本思想就是避免多个线程访问同一个资源。JAVA 使用关键字 synchronized 来实现同步操作。
同步整个方法
可以在方法的声明中使用 synchronized 关键字来对该方法中的所有代码进行同步, 如:
Public synchronized void method( ) {}
(2) 同步一段代码块
如果只对方法中访问共享资源的代码块进行同步,则需要将这段代码放入一个 synchroni zed 块中, 如:
synchroni zed( som eobj ect ) {?}
这种方式相当于给代码块加了一把锁。每把锁都以代码块所属对象 som eobi ect为标记,以便和其它的锁区别,同一把锁可以封锁多个同步代码块。当第一个线程占有了以某个对象 som eobj ect为标记的锁, 其它需要进入这段代码块的线程将被放入以这个对象为标记的锁池中, 等待获得锁的机会。
(3) 释放锁
由于等待一个锁的线程在得到锁之前不能恢复运行。所以让持有锁的线程在不再需要的时候及时释放锁是很重要的。持有锁的线程执行到 syn-chroni zed 代码块末尾时将释放锁。如果线程执行到同步代码块时出现中断或异常而跳出 synchroni zed代码块, 锁也会自动释放。此外, 还可以使用 wai t ( )方法显示释放锁产生死锁的原因主要是
因为系统资源不足。
进程运行推进的顺序不合适。
资源分配不当等。
如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁其次,进程运行推进顺序与速度不同,也可能产生死锁。多线程:两个线程为例:第一个线程(Thread1),锁住了一个对象(Object1),另一个线程(Thread2)也同时锁住了另一个对象(Object2)这时,第一个线程(Thread1),经过一段时间操作需要Object2来继续执行,但是Object2被Thread2锁定,不能为Thread1所用,这时Thread2,经过一段时间需要使用Object1来继续执行,但是Object1被Thread1锁定,不能为Thread2所用.这样就形成了资源互锁,出现了死锁状态(2)产生死锁的四个必要条件
互斥条件:一个资源每次只能被一个进程使用。
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
让所有的线程按照同样的顺序获得一组锁。这种方法消除了 和 的拥有者分别等待对方的资源的问题。将多个锁组成一组并放到同一个锁下。前面Java线程死锁的例子中,可以创建一个器对象的锁。于是在获得或之前都必须获得这个器的锁。将那些不会阻塞的可获得资源用变量标志出来。当某个线程获得器对象的锁时,就可以通过检查变量来判断是否整个器集合中的对象锁都可获得。如果是,它就可以获得相关的锁,否则,就要释放掉器这个锁并稍后再尝试。
Volatile 变量,volatile 关键字是 Java 语言为优化编译器设计的。1.class VolatileTest {2.
java课程论文_Java课程论文.doc相关推荐
- java蜘蛛纸牌课程设计_Java课程设计-蜘蛛纸牌游戏.doc
Java课程设计-蜘蛛纸牌游戏.doc 还剩 33页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: Java 课 ...
- java记事本课程设计_Java课程设计记事本的功能实现课程论文附代码
主要内容: 1设计背景 现在随着计算机科学日渐成熟,其强大的功能已经为人们深刻认识,它已经入人类社会的各个领域并发挥着越来越重要的作用,记事本是日常生活中常用到的工具,用户可以在其中方便地输入文字,从 ...
- java用户界面课程设计_java课程设计《消息公布体系》用户界面设计模板.doc
java课程设计<消息公布体系>用户界面设计模板.doc 还剩 13页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环 ...
- java通讯录课程设计_java课程设计_通讯录_通讯簿.doc
java课程设计_通讯录_通讯簿.doc 还剩 45页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: impor ...
- java eclipse参考文献_java毕设论文参考文献.doc
java毕设论文参考文献.doc [一]1 孙卫琴Tomcat与Java Web开发技术详解(第2版)M北京电子工业出版社,20092 陈雄华Spring企业级应用开发详解M北京电子工业出版社,200 ...
- java课程总结_java课程总结报告.doc
java课程总结报告 java课程总结报告该怎么写呢?下面是带带来的java课程总结报告,请参考! java课程总结报告[1] 刚开始学的时候,感觉这两门课程好高大上的样子,因为自从学软件工程这个专业 ...
- java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc
JAVA课程设计_闹钟的设计与实现项目-报告_附源代码 第2章 MACROBUTTON AcceptAllChangesInDoc [双击此处键入1级标题] PAGE 2 - PAGE 1 - .. ...
- ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc
JAVA课程设计报告银行ATM机系统 Java课程设计报告 题 目 银行ATM机系统 所在院系 软件学院 学生姓名 金磊 专 业 R机械+软件 班 级 R机械094 学 号 2011年 7 月 15日 ...
- java atm柜机_java课程设计-ATM柜机模拟程序.doc
java课程设计-ATM柜机模拟程序 课程设计(大作业)报告课程名称:面向对象程序设计课程设计 设计题目:ATM柜员机模拟程序 院 系:信息技术学院 班 级: 设 计 者: 学 号: 指导教师: 设计 ...
最新文章
- 怎样往csdn上传自己的demo
- Oracle大规模数据快速导出文本文件
- 字符串的长度超过了为 maxJsonLength 属性设置的值
- 达摩院携手交通部公路科学研究院 探索国内首个道路智能解决方案
- JQUERY插件学习之jQuery UI
- Android Glide图片加载框架(四)回调与监听
- Pandas列小数转化为百分数
- android 内存分析工具_Android Camera内存问题剖析
- PCIE知识点-002:PCIE协议中的几种bridge
- STM32F072单片机的低功耗实验/STOP模式低功耗调试
- 『前端面试资料』 前端面试考题汇总 摘自校内某内推群群公告
- mhw跳过结尾_怪物猎人世界怎么跳过剧情
- 计算机房防水,机房如何做到防水?
- 对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录、第三方分享等
- 操作系统实验报告linux进程管理,计算机操作系统实验报告三Linux进程基本管理.doc...
- 荔枝FM、喜马拉雅FM、蜻蜓FM竞品分析
- 计算机系口号8字,班级口号霸气押韵8字
- 干货!一文搞定无头浏览器的概念以及在selenium中的应用
- html隐藏电话中间几位,ios 手机号码隐藏中间4位为*号
- Keras搭建序贯式模型