Java 线程同步异步学习

本文介绍Java中实现多线程的两种方法:继承Thread类及实现Runnable接口,并探讨了Java同步机制的多种实现方式,包括ThreadLocal、synchronized、wait、notify和volatile等关键字的使用方法和原理。

Java中实现多线程

1.继承Thread,重写里面的run方法

2.实现runnable接口

Java同步机制的实现方式

ThreadLocal,synchronized,wait,notify,volatile

ThreadLocal 保证不同线程拥有不同实例,相同线程一定拥有相同的实例,即为每一个使用该变量的线程提供一个该变量值得副本,每个线程都可以独立改变自己的副本,而不是与其他线程的副本冲突.。

   优势:提供了线程安全的共享对象与其它同步机制的区别:同步机制是为了同步多个线程对相同资源的并发访问,是为了多个线程之就进行通信;而ThreadLocal是隔离多个线程的数据共享,从根本上就不在多个线程之间共享资源

volatile 修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。

synchronized 代码块中,或者常量时,不必使用

下面先线程同步的例子


线程B运行十次,线程A运行一次
public class ThreadRunA {

 public static void main(String[] args) {
  ThreadRunB b = new ThreadRunB();
  b.start();
  synchronized(b) {
   try {
    b.wait();
    for (int j = 0;j <10;j++ ) {
     b.notify();
     if (j != 9) {
      b.wait();
     }
    
    }
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
   
   
  }
 }
}



public class ThreadRunB extends Thread {

 public void run() {
  synchronized (this) {
   for (int i = 0; i < 100; i++) {
    if (i != 0 && i % 10 == 0) {
     notify();
     try {
      wait();
     } catch (InterruptedException e) {
      e.printStackTrace();
     }
    }
   }
  }
 }
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值