第十六天学习java

总结

线程

  • 线程创建方式一:

    1. 继承Thread类(实现Runnable接口)
    2. 继承Thread类
    3. 重写run方法
    4. 创建子类对象
    5. 调用start方法(这个方法是Thread里面的方法)
  • 创建线程的方式二:

    1. 写一个类实现Runnable
    2. 重写run方法
    3. 创建类的对象
    4. 将对象作为实例后Thread对象的参数传递
    5. 调用start方法

    start方法是开启一个新的线程,会自动调用run方法

  • Thread类中常用方法:

    1. currentThread 获取当前线程对象
    2. setName 设置线程名字
    3. getName 获取线程名字
    4. setPriority 设置优先级
    5. getPriority 获取优先级
    6. sleep 使当前线程睡眠多少毫秒

线程安全

  • 当多个线程访问同一资源时,如果没有做限制,会出现线程安全问题

  • 解决线程安全的方式:

    ​ 方式一:使用synchronized 同步、效率低、监听对象要保证唯一性

    ​ 同步代码块:

    ​ synchronized(监听对象){

    ​ 会出现线程安全的代码

    ​ }

    ​ 关于监听对象:

    ​ 1.Runnable的实现类可以用this,Thread的继承类不能用this,不能保证唯一性

    ​ 2.static修饰的对象可以,实现类里可以不用写,因为只创建了一个对象

    ​ 3.常量池中的字符串可以

    ​ 4.类锁可以:类名.class和对象名.getClass()

    ​ 同步方法:

    ​ public后面加一个synchronized修饰,相当于this,再加个static就相当于一个类锁

    ​ 方式二:jdk1.6之后可以用Lock接口的实现类 ReentrantLock

    ​ 使用方法:

    ​ Lock l = new ReentrantLock();

    ​ l.lock();//开锁

    ​ try{

    ​ 存在线程安全的代码

    ​ }finally{

    ​ l.unLock()//关锁

    ​ }

    ​ synchronized的锁会自动释放,lock的锁要手动释放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值