线程,同步

创建多线程的方式:
1.实现Runnable接口
在这里插入图片描述
2.继承Thread类
1.创建一个Thread类的子类
2.在Thread类的子类中重写Thread类中的run方法,设置线程任务
3.调用Thread类中的start方法,开启新线程,执行run方法
(多次启用一个线程是非法的,特别是线程结束运行后,不能再次启动)
Thread类的常用方法:
public static void sleep(long millis):使当前正在执行的线程以指定的毫秒数暂停,毫秒数结束以后,线程继续执行

public class Sleep {
    public static void main(String[] args) {
        for (int i = 0; i <= 60; i++) {
            System.out.println(i);
//使用Thread类的sleep方法让程序睡眠1秒钟(1000毫秒)
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

设置线程的名称:
1.使用Thread类中的方法setName(名字)
void setName(String name)改变线程名称,使之与参数name相同
2.创建爱你一个带参数的构造方法,参数传递线程的名称:调用父类(Thread)给子线程起一个名字
Thread(String name)分配新的Thread对象

Thread和Runnable的区别
在这里插入图片描述

并发:多个时间在同一时间段内发生
并行:多个事件在同一时刻发生

匿名内部类实现多线程程序:
在这里插入图片描述
主线程:执行主方法(main)的线程

线程安全问题:
多线程访问了共享数据会产生安全问题
解决方式:
1.同步代码块
2.同步方法
3.锁机制
在这里插入图片描述
锁对象即同步锁即对象监视器
创建一个锁对象
Object obj = new Object();
同步代码块
synchronized(obj);
原理:同步中的线程没有执行完毕不会释放锁,同步外的线程没有锁进不去同步,如此保证只有一个线程在同步中执行共享数据,保证了安全。

同步方法:
修饰符 synchronized 返回值类型 方法名(参数列表){
可能会出现线程安全问题的代码(访问了共享数据库)

静态同步方法:
public static synchronized void 方法名{
可能会出现线程安全问题的代码(访问了共享数据库)

Lock锁
java.util.concurrent.locks.Lock
Lock接口方法:
void lock()获取锁
void unlock()释放锁
使用步骤:
1.在成员位置创建一个Reentrantlock对象
2.在可能会出现线程安全的代码前调用lock方法获取锁
3.在可能会出现线程安全的代码后释放锁

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值