或许你经常被问到? Volatile关键字有何作用? 实现这些作用的底层如何实现? Volatile能够保障可见性、有序性?原子性吗? 前言 我们都知道,Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用 ...
分类:
编程语言 时间:
2020-03-22 17:57:53
阅读次数:
78
多线程共享数据(多个线程共同访问相同的数据),需要进行数据同步,保证同一数据、同一时刻只能被一个线程访问。 使用同步是为了防止多个线程同一时刻对同一数据进行读写,如果对同一数据数据都只进行读操作、不进行修改,则不必使用同步。 以售票为例 不使用同步 public class SaleTicketTh ...
分类:
编程语言 时间:
2020-03-22 12:27:00
阅读次数:
99
Java多线程 当我们去阅读java的Thread类的时候,会发现这个类与大部分的java类库API有着明显的差别,它的所有关键方法都被声明为 native 。 native 本身指代的就是本地方法,而又由于java线程模型采用基于操作系统原生线程模型,这里默认Thread中 方式代指的是 Nati ...
分类:
编程语言 时间:
2020-03-22 01:30:37
阅读次数:
146
最原始的方式,当我们要并行的或者异步的执行一个任务的时候,我们会直接使用启动一个线程的方式,如下面所示: new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub 这里放你 ...
分类:
编程语言 时间:
2020-03-21 18:26:28
阅读次数:
73
1.进程与线程的区别 2.Thread中start和run的区别 run方法会沿用主线程调用,而start方法会创建一个新的子线程 3.Thread和Runnable的关系 Runnable是接口,Thread是类 4.如何实现处理线程的返回值 5.线程的状态 六个状态: 新建(New):创建后尚未 ...
分类:
编程语言 时间:
2020-03-20 12:41:17
阅读次数:
73
管道流 在Java语言中提供了各种各样的输入/输出流 Stream ,使我们能够很方便地对数据进行操作,其中管道流是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道流,另一个线程从输入管道流中读取数据。 通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的东西。 ...
分类:
编程语言 时间:
2020-03-20 00:45:26
阅读次数:
73
单生产者与单消费者 示例: public class ProduceConsume { public static void main(String[] args) { String lock = new String(""); Produce produce = new Produce(lock) ...
分类:
编程语言 时间:
2020-03-18 23:56:02
阅读次数:
118
前言 转自 https://www.cnblogs.com/xrq730/p/5060921.html 40个问题汇总 1、多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么 ...
分类:
编程语言 时间:
2020-03-18 11:39:42
阅读次数:
63
3个结论 synchronized(非this对象 x) 是将 x 对象本身作为“对象监视器”,因此有如下三个结论: 1)当多个线程同时执行 synchronized(x){}同步代码块时呈同步效果 2)当其他线程执行 x 对象中 synchronized 同步方法时呈同步效果 3)当其他线程执行 ...
分类:
编程语言 时间:
2020-03-15 19:04:26
阅读次数:
82