2021-05-28Java多线程概述

1.多线程的实现方式  实现关系(Runnable)

步骤目录

  1. 自定义一个类,实现Runnable接口,重写run方法

  2. 在用户线程(main)中创建当前"资源类"对象,然后创建Thread类,将"资源类"对象作为参数传递

  3. public Thread (Runnable target,String name)

  4. 分别启动线程:  对象名打点访问start() 启动线程

2.多线程的继承方式

  1. <1>继承Thread

  2. 自定义类

  3. 重写Thread类的run方法

  4. 创建对象,启动线程start

3.共享资源类

synchronized:关键字----内置语言实现的(jvm来实现锁定操作:锁的释放:自动释放)

        可以使通过代码块(代码中),可以在方法上使用(同步方法)

        synchronized同步锁------属于"悲观锁"

        悲观锁:自己线程本身在执行的时候,其他线程不能进入同步代码块中其他线程不能进入,修改数据,保证数据的安全性!(针对频繁的写入操作)

4.校验多线程安全问题的标准是什么


 

  1.  查看当前程序是否是多线程环境
  2. 是否存在共享数据
  3. 是否有多余语句对共享数据进行操作

  注意:1.2都必须具备:现在使用的就是多线程环境,而且存在共享数据,从3入手

                java提供一个同步机制:将多条语句对共享数据操作的使用同步代码块包裹起来

              格式:     synchronized(锁对象){//多线程必须使用同一把锁(可以任意java类对象),将多条语句对共享数据操作

}

5.java代理模式----结构型设计模式

   静态代理:

                   同一个借口;特点:代理角色和真实角色必须同一个借口

  动态代理:

               JDK动态代理:基于接口

               CGLib动态代理:基于子类

6.Java锁

  1.  JDK5以后java提供了比synchronized,更广泛的锁定操作,程序员可以在某个位置自己去加锁.  弊端:手动释放锁
  2. java.util.concurrent.locks.Lock    接口  不能实例化
  3. 提供成员方法

        void lock():获取锁;  void unlock():手动试图释放锁;   ReentrantLock:子实现类,可重复的互斥锁!4

   synchronized:关键字===>内置语言实现====>通过jvm条用的,由jvm自动释放锁,它不仅仅可以应用在方法体中,也可以引用在方法上

    lock:是一个接口, 手动加锁和手动释放锁,  一般都是在方法中的语句中使用

7.synchronized

    虽然synchronized可以解决线程安全问题:同步代码/同步方法,但是执行效率低,可能出现死锁; 

解决死锁问题方案:"生产者消费者思想"  必须保证多个多线程必须使用的同一个资源对象

目录

1.多线程的实现方式  实现关系(Runnable)

步骤目录

自定义一个类,实现Runnable接口,重写run方法

在用户线程(main)中创建当前"资源类"对象,然后创建Thread类,将"资源类"对象作为参数传递

public Thread (Runnable target,String name)

分别启动线程:  对象名打点访问start() 启动线程

2.多线程的继承方式

<1>继承Thread

自定义类

重写Thread类的run方法

创建对象,启动线程start

3.共享资源类

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值