JAVA开发之多线程程序设计基础

建立线程:

public interface Runable{

     void run();}

Lambda 建立实例:Runable r = ()->{ task code};

由Runable建立一个Thread对象:Thread r = new Thread(r);

启动线程:t.start();

中断线程:线程的中断状态是指线程具有的Boolean标志,当调用interrupt方法时,线程的中断状态将被置位。

弄清中断是否被置位的方法:调用静态的Thread.currentThread方法获得当前线程,然后调用isInterrupt方法,即:Thread.currentThread().isInterrupt();

当线程调用sleep或者wait方法时,线程进入堵塞状态,此时调用interrupt方法时,堵塞调用将被Interrupted Exception异常中断。

如果在中断状态被置位时调用sleep方法,它不会休眠,它将清除这一状态,并抛出Interrupted Exception异常,即sleep不会检测中断状态。

调用interreupted方法时,会改变线程的中断状态。(可以在捕获异常后设置中断状态)

也可以抛出InterruptedException异常,例如:

void Thread_text()  throws InterruptedException

{   .......

sleep(delay);

......}

interrupt,interrupted,isInterrupted,currentThread.

线程被终止的原因:正常退出或出现异常而终止了程序的执行。

线程属性

线程属性包括:线程优先级,守护线程,线程组以及处理未捕获异常的处理器。

优先级设置:setPriority(int newPriority) 优先级在Thread.MIN_PRIORITY(1)与Thread.MAX_PRIORITY(10)之间,默认为NORM_PRIORITY(5)。

守护线程:为其他的线程提供服务。调用t.setDaemon(true)将线程转化为守护线程。

线程的run方法不能抛出任何受查异常,但是非受查异常会使线程中止,即线程死亡,这时异常被传递到一个未用于捕获异常的处理器。

线程的同步(竞争)

类似于操作系统中的锁机制。ReentrantLock保护代码块的基本结构:

myLock.lock();

try{

critical section;(临界区)

}

finally{

myLock.unlock();

条件对象:管理那些已经进入被保护的代码段但还不能运行的线程。

Condition newContidion():返回一个与该锁相关的条件变量

void await():将该线程放到条件的等待集中。

void signal():随机解除一个线程的堵塞状态。

void signalALL():解除该条件的等待集中所有的线程的堵塞状态。

public synchronized void method(){......}

等价于public void method(){

this.intrinsiclock.lock();

try

{......}

finally {this.intrinsiclock.unlock();}

}只有一个对象变量。wait,notify,notifyAll。

tryLock方法。Lock方法不能被中断。

读写锁:

(1)构造一个ReentrantReadWriterLock对象。

(2)抽取读锁和写锁。

(3)对所有获取方法加读锁,对所有修改方法加写锁。

线程池:包含很多准备运行的空闲线程。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值