多线程学习随记

1.如何实现线程安全。

  1)volatile 关键字,线程安全,三个原则,原子性,可见性,有序性,保证公用数据不被多个线程使用造成问题,将java内存模型,提出,jvm在分配内存的时候,系统分配一个主内存,各个线程有个独立的工作内存,公用的数据存在主内存,如果一个线程调用,后改变了,没有刷新,另一个线程使用就是有问题,volatitle关键字修修饰的变量会保证可见性,强制刷新,只要一个线程改变了这个变量,主内存立即刷新,但是它不能保证有序性。

 2)synchronzied 关键字,这个现在被普遍使用,它的使用在同步代码块的或者同步方法上,线程进去加了个monitorenter 锁 ,线程出去打开monitorexit锁,别的线程可以进去,ReentrantLock 锁,它更灵活,能中断锁不用无线等待,且还有个区别是,下一个进入的线程必须是有序排队的,而synchronzied 则还是随机的,当然这个锁也是把 双刃剑 ,必须释放,且在finally里执行。

2.如何调节线程

 1)在object中有几个方法 wait(),notify()...这些方法是本地方法,可以控制线程的执行。

 2)阻塞队列,blockingqueue。

 3)Condition。

posted @ 2015-01-07 12:22  猪哥哥厉害  阅读(118)  评论(0编辑  收藏  举报