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

子线程实现方式:

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

什么情况下需要同步?

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

同步代码块:

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

同步方法:

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

注意:

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

JDK1.5新特性:互斥锁

  1. 同步
    使用ReentrantLock类的lock()和unlock()方法进行同步。
  2. 通信
    使用ReentrantLock类的newCondition()方法可以获取Condition对象。
    需要等待的时候使用Condition的await()方法,唤醒的时候用signal()方法。
    不同的线程使用不同的Condition,这样就能区分唤醒的时候找哪个线程了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容