浅论1204012027

浅论1204012027

ID:22910575

大小:59.00 KB

页数:9页

时间:2018-11-01

浅论1204012027_第1页
浅论1204012027_第2页
浅论1204012027_第3页
浅论1204012027_第4页
浅论1204012027_第5页
资源描述:

《浅论1204012027》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、浅论1204012027浅论1204012027_俞喆军_java课程论文导读:Lock的锁定是通过代码实现的,而synchronized是在JVM层面上实现的。要监控工具能监测到Lock的锁定那还需要有一段时日。另外,synchronized在锁定时如果方法块抛出异常,JVM会自动将锁释放掉,不会因为出了异常没有释放锁造成线程死锁。但是Lock的话就享受不到JVM带来自动的功能,出现异常时必须在finally将锁释放掉,否则学号:1204012027班级:12计本2班俞喆军JAVA课程论文多线程和异常处理大三上学期学习了《java语言程序

2、设计》这门课程。Java语言是当前计算机应用较为广泛的面向对象程序设计语言之一,本次课程注重对我们动手能力的培养与提高。我在边学习边上机的过程中,深入细致的掌握这门课程。通过上机调试程序,发现了概念上的模糊和方法的错误,最终深刻理解和掌握这门Java语言课程。这里,关于java中的多线程和异常处理两方面的内容作出自己的一些理解和学习心得。在Java语言中,线程的创建有两种方式:(1)定义一个Thread类的子类,并在该子类中重写run()方法,该run()方法是线程执行的起点;(2)定义一个实现Runnable接口的类,并在该类中定义Run

3、nable接口的run()方法,同样,该run()方法代表了线程执行的起点。Thread类封装了线程的行为,它是一个具体的类。要创建线程,必须定义一个Thread类的子类,在该子类中重写Thread类的run()方法,即定义线程所需完成的工作。线程的启动则是通过引用该Thread子类的start()方法来实现,而实际上start()方法被引用后,其实引用该Thread子类的run()方法来启动线程的。也就是说,其实线程类只有一种,那就是Thread。线程有线程自己的特性,多线程提高了CPU利用率的同时,也带来了一些问题。因此,在学习多线程,

4、其实就是学习多线程编程多带来哪些问题,以及如何去解决这些问题,使得多线程能够按照我们的意愿来执行。首先,线程也有自己的状态,除了新建和死亡状态,就有等待/阻塞、准备、和运行状态。同样的,这些状态可以转换。线程个状态的转换是:准备可以进入运行,运行也可以进入准备;运行还可以进入等待/阻塞;但是等待/阻塞不能进入运行,等待/阻塞可以进入准备状态。一个线程对象从创建、启动、运行、终止,直到线程对象被Java虚拟机所释放,其生命周期会处于各种不同的状态。当创建了线程对象,并引用其start()方法之后,该线程就进入自身的生命周期。线程的生命周期通常

5、包含有四种状态,即“运行”、“暂停”、“同步”和“挂起”,这四个状态的迁移主要是通过Thread类所提供的方法来实现。“运行”和“暂停”间的状态转换是通过sleep()和join()方法来实现,而“运行”和“同步”之间转换则借助于每个对象自身的e()方法完成与“运行”状态的转换。这几种状态,加上控制线程的函数,就可以控制线程了,这就叫作线程的调度。新建:就是利用Thread的构造函数定义一个线程。准备:当执行了Thread中的strat方法,及使得线程进入准备状态,随时可以进入运行状态。运行:当操作系统的调度器把CPU分给了这个线程,这个线

6、程就进入了运行状态,也就是执行我们在线程中定义的run方法里面的内容。等待/阻塞:当一个线程的继续执行需要一个条件,但是该条件还不成熟,需要调度器来通知。而等待调度器发出通知的这段时间内,线程就进入了等待状态。当一个线程访问一个资源的时候,这个资源正被另外的线程访问,而这个资源是加了锁的,只允许一个线程访问。这时候,线程就进入了阻塞状态。死亡:当线程的run方法运行完之后,线程死亡,这是正常死亡;当线程方发生异常而没有捕获时,也会死亡,这是非正常死亡。线程的同步:线程同步一般有三种方法:synchronized块、synchronized方

7、法和加lock锁。Synchronized方法只需在方法签名中加入该关键字即可,lock锁只要啊相应方法中调用lock对象的lock方法即可。二者的区别:synchronized也有好处的,比如一些性能监控工具,可以监测到synchronized的锁。无法监测到Lock的锁定,毕竟Lock的锁定是通过代码实现的,而synchronized是在JVM层面上实现的。要监控工具能监测到Lock的锁定那还需要有一段时日。另外,synchronized在锁定时如果方法块抛出异常,JVM会自动将锁释放掉,不会因为出了异常没有释放锁造成线程死锁。但是Lo

8、ck的话就享受不到JVM带来自动的功能,出现异常时必须在finally将锁释放掉,否则将会引起死锁。在实际的多线程编程中,会碰到多个线程对同一资源进行访问的情况。比如多个线程对同

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。