Java多线程之建议和问题

Java多线程之建议和问题

 

建议

 

1. 给线程取个好名字,好的名字有助于识别线程是拿来干什么的。

 

2. 尽量少使用同步和锁,如果一定要用,就要缩小同步范围:静态块或Lock

 

3. 多用同步类,少用wait(),wait(),常用同步类有:CountDownLatch,Semaphone,CyclicBarrier

 

4. 多用并发集合,少用同步集合

 

 

 

总结

 

1. 多线程之间的数据要分类开,避免使用全局变量(共享数据)

 

2. 如果多线程一定要用共享数据,那一定要做好读写保护(临界区、互斥、加锁)

 

3. 确定你知道你的线程状态,不要径自结束程序而不等待他们结束

 

4. 千万不要在一个临界区中调用 sleep 或 wait 函数,不要长时间锁住资源

 

5. 线程之间的通讯,可以通过互斥消息解决,当然这时工作线程要自己內建消息循环,接收处理消息。

 

 

 

多线程问题

 

1. 一个线程运行中抛异常会怎样?

线程会自己死掉,不会影响其他线程。

 

解决方法:

  1. 在run()中加try catch
  2. 用UncaughtExceptionHandler接口

 

2. 三个线程T1、T2、T3如何有顺序得执行

利用join(),调用的方式是,T3中调用T2.join(),T2中调用T1.join(),这样的执行顺序就会是T1,T2,T3

 

 

3. 检查一个线程是否拥有锁

Thread.holdsLock() = true;

 

 

 

面试题

 

网上一大把

http://www.importnew.com/12773.html

http://ifeve.com/15-java-faq/

http://www.cnblogs.com/dolphin0520/p/3932934.html

http://www.cnblogs.com/fingerboy/p/5352880.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值