美文网首页
JAVA多线程总结(子线程、同步、互斥锁)

JAVA多线程总结(子线程、同步、互斥锁)

作者: and2long | 来源:发表于2017-01-02 12:09 被阅读0次

子线程实现方式:

  1. 继承Thread类;
  2. 实现Runnable接口。

什么情况下需要同步?

  • 当多线程并发,有多段代码同时执行时,我们希望某一段代码在执行的过程中,不要切换到其他线程工作,这时就需要同步。
  • 如果两段代码是同步的,那么同一时间只能执行一段,在一段代码执行结束之前,不会执行另外一段代码。

同步代码块:

  • synchronized加上一个锁对象来定义一段代码,这就叫同步代码块。
    多个同步代码块如果使用相同的锁对象,那么他们就是同步的。

同步方法:

  • 只需要在方法上加synchronized关键字即可。
    非静态方法的锁对象是this;
    静态方法的锁对象是当前类的字节码文件。

注意:

  • 被多个线程共享的成员变量需要加static修饰。
  • 多次开启一个线程是非法的。

JDK1.5新特性:互斥锁

  1. 同步
    使用ReentrantLock类的lock()和unlock()方法进行同步。
  2. 通信
    使用ReentrantLock类的newCondition()方法可以获取Condition对象。
    需要等待的时候使用Condition的await()方法,唤醒的时候用signal()方法。
    不同的线程使用不同的Condition,这样就能区分唤醒的时候找哪个线程了。

相关文章

  • 线程同步与互斥

    Linux--线程编程 多线程编程-互斥锁 线程同步与互斥 互斥锁 信号量 条件变量 互斥锁 互斥锁的基本使用...

  • JAVA多线程总结(子线程、同步、互斥锁)

    子线程实现方式: 继承Thread类; 实现Runnable接口。 什么情况下需要同步? 当多线程并发,有多段代码...

  • OpenMP多线程——Parallel for

    多线程——线程同步 数据竞争问题 线程互斥同步——critical 线程互斥同步——atmoic 线程互斥同步——...

  • Java多线程(十五)---锁的内存语义

    移步java多线程系列文章锁是Java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向...

  • linux多线程同步——互斥锁、条件变量、读写锁、自旋锁、信号量

    互斥锁 mutex是最常见的多线程同步的方法。多线程共享一个互斥量,得到锁的线程可以进入临界区执行代码。 mute...

  • iOS底层探索-多线程锁

    多线程的锁大致可分为两大类:互斥锁、自旋锁;也可以分为三类:互斥锁、自旋锁、读写锁。 一、互斥锁:互斥+同步(强调...

  • 多线程

    同步锁,又叫互斥锁,@synchronized(self) 自旋锁:atomic:原子属性,多线程环境下,只有一个...

  • 解决线程同步的方案汇总总结

    这是一篇继上一篇继续介绍多线程同步的博客.(你了解多线程自旋锁、互斥锁、递归锁等锁吗?[https://www.j...

  • 锁与多线程同步的实现

    Java当中的锁都是为了保证多线程同步执行。如果没有锁的话,多线程是异步执行的。 什么是多线程同步? 请看下面的代...

  • 多线程同步

    1.linux使用多线程同步的方法 1)互斥锁:当线程A锁定了互斥变量时,线程B再去锁定时就会被挂起,直到A解锁。...

网友评论

      本文标题:JAVA多线程总结(子线程、同步、互斥锁)

      本文链接:https://www.haomeiwen.com/subject/fjswvttx.html