多线程与并发
35哥
大龄男自学
展开
-
volatile与synchronized区别
多线程正常执行的时候,我们说的共享变量,其实每个线程都会在线程内部创变量的一个副本,线程中操作的其实就是这个副本变量,运算结束后,会同步副本变量与原始变量。volatile :关键字是使用在属性上面,表明线程直接操作原始变量,而不会创建副本变量,因此原始变量和副本变量之间的赋值和同步操作就没了,因此线程运算会加速,但是此属性是不能保证原子的正确性。synchronized:是使用在方法或者...原创 2020-04-02 11:16:48 · 169 阅读 · 0 评论 -
java之waite()和sleep()方法的区别
sleep(Long time),线程休眠一定时间后自动恢复运行;waite(Long timeout),线程等待,如果没有唤醒,则在一定时间后自动唤醒。那这两个可不要以等同呢?都是指线程暂停一定时间。不sleep方法在同步方法内是不会释放锁的,因此,休眠时间到了它会继续运行当前同步方法;waite方法会释放锁,等待时间内没有唤醒则会自动唤醒,唤醒后此线程会置就绪状态,而不是立...原创 2020-04-02 10:24:59 · 498 阅读 · 0 评论 -
java多线程之生产者与消费者模型
需求分析:产品、生产者、消费者,生产者每次生产将产品数+1,消费者每次消费将产品数-1; 消费者消费的时候,产品数要大于0才能被消费; 当商品数大于20的时候,停止生产; 当商品数小于5的时候,停止消费。模拟流程:假如消费者先抢到线程,初始产品数为0,则不会消费。 假如生产者先抢到线程,生产出了第1个商品; 下次消费者抢到线程,判定数量为1大于0,但是其小于5,消费...原创 2020-04-02 10:01:14 · 187 阅读 · 0 评论 -
java线程并发与同步
关于多线程与并发,多线程是指系统在轮流执行不同的方法,由于CPU速度太快,所以我们看起来是同步执行的,这就是所谓的线程并发;线程并发时访问共享变量会引起数据不一致的问题,解决数据的不一致问题就需要用到线程同步。此篇讲线程同步技术。同步技术引出:先来个程序测试不同步的情况:class MyRunable implements Runnable{ private int...原创 2020-04-01 17:09:23 · 142 阅读 · 0 评论 -
线程类Thread的常用方法
类的定义:public class Thread implements Runnable {}构造方法1、无参构造方法public Thread() { init(null, null, "Thread-" + nextThreadNum(), 0);}private static synchronized int nextThreadNum() { ...原创 2020-04-01 10:55:51 · 192 阅读 · 0 评论 -
多线程Thread、Runnable和Callable三种方式的理解
java提供了多线程的类Threadpublic class Thread implements Runnable此类实现了Runnable接口,接口定义如下,它是一个函数式接口,因此可以使用lambda@FunctionalInterfacepublic interface Runnable { public abstract void run();}在Threa...原创 2020-03-31 15:21:16 · 339 阅读 · 0 评论