多线程学习

特性:

  1.共享性

  2.互斥性(同一时间,对一份资源,只允许一个线程对其进行写操作)

  3.原子性(数据的操作是独立的,不可分割的整体。常见的方式加锁

  4.可见性

  5.有序性(为提高性能,编译器和处理器可能会对指令做重排序)

  6.重排序(对于数据没有依赖的语句,处理器为了优化性能,可能会重新排序,这对单线程没有影响,但是对多线程可能有影响)

 

synchronized:

  1.作用于一般的方法上,锁对象

  2.作用于静态方法的上,锁类

  3.作用于方法块上,根据锁的内容不同而不同

    方法块的好处是,只锁同步块,更精确

 

Lock和ReadWriteLock

lock与synchronized对比:

 1.并发不激烈时,性能相差不到,推荐使用synchronized,高并发时,synchronized会极具下降,推荐使用lock

 2.synchronized不需要手动释放锁,而lock需要

 3.lock可以使用tryLock等方法,更加灵活

 4.lock若想实现wait,notify方法,需要借助Condition实现

posted @ 2018-10-17 10:52  IT新手村  阅读(88)  评论(0编辑  收藏  举报