[Java基础笔记]线程部分
2016-07-26 16:09
429 查看
线程状态
New:新创建Runnable:可运行
Blocked:被阻塞
Waiting:等待
Timed Waiting:计时等待
Terminated:被终止
确认线程状态:getState方法
注意事项
完成线程功能代码放在类内的run()方法中,而调用时使用start()方法Java不支持多继承,若使用已继承其他类的程序使用线程,可以使用Runnable接口(建立Runnable对象,使用带Runnable对象的构造方法创建Thread,最后调用start()方法)
创建独立线程
1.通过接口实现 //创建线程接口类 public xx implements Runnable{ public void run(){...} } //赋值线程 xx r = new xx(); Thread t = new Thread(r); //启动 t.start(); 2.通过继承实现 public xx extends Thread{ public void run(){...} } <pre name="code" class="java">//赋值线程 xx t = new xx(); //启动 t.start();
线程中断判别
public void run(){ try{ while(!Thread.currentThread().isInterrupted()) {...} catch(InterruptedException e) {...} finally {...} }
线程终止原因
因run正常退出而死亡因一个未捕获的异常终止run而意外死亡
锁
ReentrantLock:
//类内定义锁 private final ReentrantLock xx = new ReentrantLock(); //在方法内调用锁 xx.lock(); try{...} finally{xx.unlock();}
内部锁synchronized:
//类内方法调用(volatite关键字也类似) public synchronized void method(){...}
读/写锁:
//构造一个读写锁对象 ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); //抽取读锁、写锁 private Lock readlock = rwl.readLock(); private Lock writelock = rwl.writeLcck(); //自行在方法内加读锁 readlock.lock(); try{...} finally{readlock.unlock();} //自行在方法内加写锁 writelock.lock(); try{...} finally{writelock.unlock();}
相关文章推荐
- Java学习笔记_day1
- Java Collection
- java synchronized详解
- properties文件自动存盘为Unicode格式(Eclipse插件)
- jps - Java Virtual Machine Process Status Tool
- JVM GC调优实战
- 【并发】ThreadLocal源码浅析
- struts2--拦截器
- Java数组使用-提高篇
- IO流之Print流
- JDK8 LocalDateTime日期操作大升级
- Java学习笔记(1)
- Java设计模式—— 观察者模式
- spring-boot-mybatis 学习资料整理
- RX的使用一:RXjava初级入门
- Java学习之Iterator(迭代器)的一般用法
- 匿名内部类
- springmvc乱码
- Spring中创建bean的三种方式
- myeclipse2014快捷功能之tostring