Java:并发编程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

一、名词解释

二、创建线程的方式

2.1 继承Thread类

2.2 实现Runnable接口

2.3 使用匿名内部类

2.4 使用Java 8的Lambda表达式

2.5 使用Executor框架

三、run方法和start方法

3.1 run方法

3.2 start方法

四、线程状态

五、影响线程间状态切换的API和场景

六、JMM:Java内存模型


提示:以下是本篇文章正文内容,下面案例可供参考

一、名词解释

1.1 进程

对运行时程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发

进程之间不会相互影响

1.2 线程

是进程的子任务,是CPU调度和分派的基本单位,实现了进程内部的并发

1.3 上下文切换

CPU保存当前线程的本地数据、程序指针状态,并加载下一个要执行的线程的本地数据、程序指针状态

二、创建线程的方式

2.1 继承Thread类

class MyThread extends Thread {
    @Override
    public void run() {
        // 线程执行的代码
    }
}

// 创建并启动线程
MyThread thread = new MyThread();
thread.start();

2.2 实现Runnable接口

class MyRunnable implements Runnable {
    @Override
    public void run() {
        // 线程执行的代码
    }
}

// 创建并启动线程
MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable);
thread.start();

2.3 使用匿名内部类

Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // 线程执行的代码
    }
};

// 创建并启动线程
Thread thread = new Thread(runnable);
thread.start();

2.4 使用Java 8的Lambda表达式

Runnable runnable = () -> {
    // 线程执行的代码
};

// 创建并启动线程
Thread thread = new Thread(runnable);
thread.start();

2.5 使用Executor框架

Executor executor = Executors.newFixedThreadPool(10); // 创建线程池
executor.execute(() -> {
    // 线程执行的代码
});

三、run方法和start方法

3.1 run方法

是用来封装被线程执行的代码,手动调用相当于普通方法调用

3.2 start方法

启动线程,然后由JVM调用此线程的run方法

四、线程状态

NEW:线程尚未启动,还没有交给CPU去调度管理
RUNNABLE:线程正在执行中
BLOCKED:阻塞状态,等待锁的释放
WAITING:等待状态,需要其他线程唤醒
TIMED_WAITING:超时等待状态,线程等待一个具体的时间,超过时间会被自动唤醒
TERMINATED:终止状态,线程已结束或者遇到异常结束

五、影响线程间状态切换的API和场景

 

六、JMM:Java内存模型

线程对共享变量的操作都必须在自己的本地内存中进行,不能直接从主内存中读取
JMM主内存:属于共享数据区域,包含了堆和方法区
JMM本地内存:属于私有数据区域,包含了程序计数器、本地方法栈和虚拟机栈
顺序一致性模型:保证执行结果不变
顺序一致性模型:保证内存可见性
happens-before:两个操作存在该关系,那么第一个操作的结果对第二个操作可见
一个线程里的每一个操作,都happens-before任意后续操作
解锁happens-before加锁 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值