Java多线程

1.Thread.yield 对线程调度一个建议,让出CPU

2.shutdown()方法的调用可以防止新任务被提交给这个Executor

3.可以返回结果的线程

实现Callable接口的call()方法,ExecutorService调用submit()方法执行。返回一个Future对象。
Future调用isDown()检查是否调用完。
Future调用get()得到返回结果,若没有执行完,将一直阻塞。

4.后台线程

当所有非后台线程结束时,后台线程也就结束了。
如果是设置线程池为后台线程,重写ThreadFactory接口,
后台线程结束时不会调用finally方法,突然中止。

5.捕获线程抛出的异常。

实现Thread.UncaughtExceptionHandler接口的UncaughtExceptionHandler的方法。
调用thread的setUncaughtExceptionHandler方法。

6. synchronized 获取的锁,在方法抛出异常的时候会自动解锁

7.使用Lock对象加锁。

lock.lock;
try{
dosomething()
} finallu{
lock.unlock();
}
trylock(时间,时间单位)尝试去获取锁。

8.原子类

AtomicInteger AtomicLong AtomicReference

9.调用wait

线程执行被挂起,对象上的锁被释放

10.只能在同步控制方法和同步控制块里调用wait(),notify(),notifyAll();如果在非同步块里调用,程序能通过编译,但运行的时候,将抛出异常。

11.同步队列

BlockingQuery LinkedBlockingQuery
ArrayBlockingQuery

12.interrupt

如果一个线程已经被阻塞,或者执行一个阻塞的任务,那么设置的这个线程的中断状态将抛出InterruptedException。
Interrupted可以用来检查中断状态。

13. holdsLock()可以用来检查当前线程是否持有锁。

14.await() signal()

15.同步器

CountDownLatch
可以向CountDownLatch对象设置一个初始计数器,任何在这个对象上调用wait的方法都将被阻塞,直到这个计数器为0,
其他任务在结束其工作时,可以调用该对象上的countDown来减少这个计数器。
CountDownLatch只能被触发一次,计数器不能被重置。
CyclicBarrier
作用和CountDownLatch一样,计数器可以被重置。
Exchanger
用于两个线程之间交换数据,
当你调用exchanger()方法时,他将阻塞直至对方任务调用exchanger()方法时。
ScheduleExecutor
定时操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 7,206评论 1 15
  • 该文章转自:http://blog.csdn.net/evankaka/article/details/44153...
    加来依蓝阅读 12,078评论 3 87
  • 写在前面的话: 这篇博客是我从这里“转载”的,为什么转载两个字加“”呢?因为这绝不是简单的复制粘贴,我花了五六个小...
    SmartSean阅读 10,253评论 12 45
  • 8月10日,《扬子晚报》报道了一位大学生借贷打赏女主播,父母却在家吃低保。报道称,这名大学生通过校园贷款平台获得了...
    3bd22d417c8b阅读 4,596评论 0 0
  • 时光剪碎了谁的发 晒干做流星 年少时星空下许愿 走过亿万次时光是否抵达 梦中经过的花园 穿连衣裙的姑娘打瞌睡 蝴蝶...
    無魚阅读 2,118评论 3 2

友情链接更多精彩内容