线程池
线程
Task
一个线程总是关联这一个Task。
拿Thread来说,要么继承Thread(Thread实现了Runnable),覆盖run方法,要么实现Runnable接口,返回一个run方法给Thread。
前者task和自定义Thread类关联及其紧密,这个Task被自定义的Thread隐藏起来了,其他的Thread没有办法使用这个Task,后者Task和Thread分的比较开,任何Thread都可以去执行这个Task。
线程 - 线程
并行
串行
依赖
并行和并发
如果只有一个CUP,那两个线程没有办法真正的同时执行,只能轮流使用CUP,这种就是并发。
如果有多个CUP,那两个线程可以同时执行,但也不一定就是同时执行,具体还是一个资源分配的问题,如果同时执行,就是并行。
原子操作
sleep
Thread.sleep(1000),让当前线程暂停,注意是一个类方法
共享资源
Synchronized
Synchronize (obj) {
}
和
looc()
...
unlock()
volatile
wait : pause
notify/notifyAll : resume