Java 并发

来源:互联网 发布:json decode null 编辑:程序博客网 时间:2024/05/16 05:44

常用方法

Thread.yield() 

提示让别的线程使用CPU

.join()

在目标线程结束后,再继续当前线程

.interrupt()

会设置该线程的中断状态位,即设置为true,通过 

Thread.currentThread().isInterrupted(),

thread.interrupted()(该方法调用后会将中断标示位清除,即重新设置为false),

catch(InterruptExcetion )会将中断标示位清除 

进一步处理,或中断线程

Thread.sleep(int n)

TimeUnit.MILLISECONDS.sleep(n)

线程进入阻塞,n毫秒后就绪,不会释放 锁


synchronized

同步方法

 同步块

Lock.lock()
实现同步


线程间的协作
wait() , notify() ,notifyAll()
Condition.await() .signal() .signalAll()

ThreadLocal


volatile关键字


中断线程方法
interrupt
exec.shutDownNow() -> interrupt
exec.submit(r) ->Future<>.cancel() ->interrupt

Executor 框架

Executor框架同java.util.concurrent.Executor 接口在Java 5中被引入。Executor框架是一个根据一组执行策略调用,调度,执行和控制的异步任务的框架。

无限制的创建线程会引起应用程序内存溢出。所以创建一个线程池是个更好的的解决方案,因为可以限制线程的数量并且可以回收再利用这些线程。利用Executors框架可以非常方便的创建一个线程池




线程池实现
任务队列

 添加线程

 线程获取任务




0 0
原创粉丝点击