先看例子: 解析: 通过源码发现Thread类也实现了Runnable接口,通过所以此创建实例的过程是一个Runnable的实现类对象(myThread),传递给另一个Runnable实现类对象(t、t1、t2)的过程,而Thread类中还定义了个Runnable类型的属性,用于配合接收Thread ...
分类:
编程语言 时间:
2020-02-03 22:50:00
阅读次数:
154
1.引子 在java多线程并发编程中,有八大基础核心。考考你:看看都有哪八大基础核心呢?它们分别是: 1.创建线程的方式 2.线程启动 3.线程停止 4.线程生命周期 5.线程相关的方法 6.线程相关的属性 7.线程异常处理 8.线程安全 今天我们从第一个基础核心开始:创建线程的方式 2.考考你 # ...
分类:
编程语言 时间:
2020-02-03 12:19:31
阅读次数:
93
所谓的高并发除了在架构上的高屋建瓴,还得需要开发人员在具体业务开发中注重自己的每一行代码、每一个细节,面子有的同时,更重要的还是要有里子。 面对性能,我们一定要有自己的工匠精神,不可以对任何一行代码妥协! 今天和大家分享在业务开发中如何降低接口响应时间的一个小技巧,也是大家日常开发中比较普遍存在的一 ...
分类:
编程语言 时间:
2020-02-03 11:56:09
阅读次数:
90
1 可重入锁 可重入锁,也叫递归锁。它有两层含义,第一,当一个线程在外层函数得到可重入锁后,能直接递归地调用该函数,第二,同一线程在外层函数获得可重入锁后,内层函数可以直接获取该锁对应其它代码的控制权。之前我们提到的synchronized和ReentrantLock都是可重入锁。 通过ReEnte ...
分类:
编程语言 时间:
2020-02-02 14:04:05
阅读次数:
68
java多线程 的 线程池,固定线程池和临时增加线程池
分类:
编程语言 时间:
2020-02-02 01:34:34
阅读次数:
76
1 import java.util.concurrent.TimeUnit; 2 3 /** 4 * 对写业务加锁 5 * 对读业务不加锁 6 * 脏读 7 */ 8 public class Account { 9 10 String name; 11 double balance; 12 13 ...
分类:
编程语言 时间:
2020-01-31 20:53:53
阅读次数:
104
1 import java.util.ArrayList; 2 import java.util.List; 3 import java.util.concurrent.TimeUnit; 4 5 /** 6 * 创建一个容器,一根线程往里放东西,一根线程判断是否符合条件 7 */ 8 public ...
分类:
编程语言 时间:
2020-01-31 20:46:36
阅读次数:
69
一、synchronized锁住的不是代码块,是对象。 1 /** 2 * synchronized 对某个对象加锁 3 */ 4 public class SynchronizedTest { 5 6 private int count = 10; 7 private Object o = new ...
分类:
编程语言 时间:
2020-01-31 20:37:58
阅读次数:
73
线程创建的方式 有两种 第一种是继承Thread类 重写run方法 (个人偏向这一种实际中这种用的较多) 例如 public class MyThead extends Thread { int j=20; public void run(){ for (int i = 0; i < 20; i++ ...
分类:
编程语言 时间:
2020-01-31 14:05:20
阅读次数:
62
1 import java.util.ArrayList; 2 import java.util.List; 3 import java.util.concurrent.*; 4 import java.util.concurrent.Callable; 5 import java.util.con ...
分类:
编程语言 时间:
2020-01-31 00:36:34
阅读次数:
124