[Java基础笔记]线程部分

来源:互联网 发布:ios横版动作游戏 知乎 编辑:程序博客网 时间:2024/05/21 09:12

线程状态

  • 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();}





0 0
原创粉丝点击