java小知识点7
Posted 一个后端狗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java小知识点7相关的知识,希望对你有一定的参考价值。
进程:每个进程拥有自己的一整套变量
线程:共享数据
调用Thread.sleep不会创建一个新的线程,sleep是Thread类的静态方法,用于暂停当前线程。
定义线程建议通过Runnable接口,继承Thread无法继承其它的类。
线程的stop方法已经被弃用。请求线程终止,使用interrupt方法
如果线程正在运行,调用interrupt方法,中断状态置位
线程被阻塞,调用interrupt方法,抛出InterruptException
线程状态:
- new
- runnable
- blocking
- waiting
- timed waiting
- terminated
新创建状态:
Thread对象刚被实例化
可运行线程:
调用start方法后,线程处于runnable方法。可运行的线程可能正在运行,也可能没有运行,取决于时间片分配
阻塞状态和等待状态:
被终止:
- run方法正常退出
- 一个没有捕获的异常
线程属性
线程优先级1-10,高度依赖操作系统
守护线程为其它线程提供服务,当虚拟机中只剩下守护线程,虚拟机退出。守护线程不应该访问固有资源,因为它在任意时刻发生中断。
线程的run方法不能抛出任何必检异常
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked exception处理掉。
捕获线程逃逸的异常:http://blog.csdn.net/u010853261/article/details/61419677
同步
ReentrantLock和synchronized
不同对象内部的lock不具有竞争,Synchronized也是一样的。
条件对象的作用:进入临界区,还需要一个条件才能正常工作
不使用>synchronized>lock+condition
监视器:不需要程序员考虑加锁,保持线程安全
用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。volatile很容易被误用,用来进行原子性操作。
volatile详细解释:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html
尝试获得锁:myLock.tryLock()成功加锁返回True,失败返回False
ReentrantLock:可以再次进入的锁
ReentrantReadWriteLock:读写锁
不要使用线程的stop方法和suspend方法
阻塞队列
阻塞队列:LinkedBlockingQueue、ArrayBlockingQueue、PriorityBlockingQueue、DelayQueue(完成延迟时间才会从队列移除)
线程安全的集合
Callable和future
执行器
同步器
以上是关于java小知识点7的主要内容,如果未能解决你的问题,请参考以下文章