线程
多线程、单线程
这很张扬
好好学习,天天向上,和我一起!
展开
-
Java中volatile关键字和synchronized的区别和用法
Java线程控制中常用的两个关键字:synchronized、volatilevolatile关键字特性:内存可见性(Memory Visibility),所有线程都能看到共享内存的最新状态;有序性;不具备原子性(最致命缺点)。对于volatile修饰的变量,JVM虚拟机只是保证从主内存加载到线程工作内存的值是最新的;因此volatile关键字解决的是变量【读】时的可见性问题,但无法保证原子性,对于多个线程访问同一个实例变量时需要进行【加锁】同步。 对于volatile修饰的变量,JVM虚拟原创 2021-03-19 20:04:59 · 262 阅读 · 0 评论 -
Lambda表达式
Lambda表达式无参数无返回值有参数有返回值使用前提(注意事项)无参数无返回值package demo03.Lambda;/* 创建Runnable接口的实现类,重写run方法,设置线程任务 */public class RunnableImpl implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread().getName()+原创 2020-12-02 16:59:49 · 68 阅读 · 0 评论 -
线程池
线程池线程池的概和原理线程池的使用(生成线程池)线程池的概和原理线程池的使用(生成线程池)package demo02.ThreadPool;/* 2.创建一个类,实现Runnable接口,重写run方法,设置线程任务 */public class RunnableImpl implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread原创 2020-12-02 13:32:00 · 70 阅读 · 0 评论 -
线程的状态和通信
线程的状态和通信线程的状态等待唤醒案例线程间的通信等待唤醒机制线程的状态状态图:等待唤醒案例分析:package demo10.WaitAndNotify;/* 等待唤醒案例:线程之间的通信 创建一个顾客线程(消费者):告知老板要的包子的种类和数量,调用wait方法,放弃cpu的执行,进入到WAITING状态(无限等待) 创建一个老板线程(生产者):花了5秒做包子,做好包子之后,调用notify方法,唤醒顾客吃包子 注意:原创 2020-12-02 13:22:08 · 69 阅读 · 0 评论 -
多线程的安全问题
多线程的安全问题模拟卖票案例发现多线程的安全问题解决线程安全问题方式1(使用同步代码块Synchronized)解决线程安全问题方式2(使用同步方法synchronized)解决线程安全问题方式2(使用静态的同步方法synchronized)解决线程安全问题方式3(使用Lock锁)模拟卖票案例发现多线程的安全问题可能会出现重复票或者不存在的票产生线程安全问题的原理package demo06.ThreadSafe;/* 模拟卖票案例 创建3个线程,同时开启,对共享的票进行出售原创 2020-11-27 00:02:09 · 101 阅读 · 0 评论 -
多线程(多线程和单线程)
多线程和单线程单线程多线程三级目录单线程package demo05.Thread;public class Person { private String name; public void run(){ //定义循环,执行20次 for(int i=0; i<20; i++){ System.out.println(name+"-->"+i); } } public Perso原创 2020-11-27 00:01:07 · 239 阅读 · 0 评论