- 博客(7)
- 收藏
- 关注
原创 Lock锁
同步锁使用Lock对象充当java.util.concurrent.locks.Lock接口是控制多个线程对共享资源进行访问的工具锁提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问共享资源之前应该先获得Lock对象ReentrantLock类实现了Lock,它拥有与Synchronized相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是ReentrantLock,可以显示加锁,释放锁这是可重入锁ReentrantLock lock = new Reen.
2021-07-20 23:08:36
49
原创 线程底层1
synchronized底层实现jdk早期的 重量级 – OS(系统锁)后来的改进锁升级的概念synchronized(Object)markword记录这个线程的ID(偏向锁)如果线程争用,升级为 自旋锁10次以后,升级为重量级锁 – OS系统锁,不占用cpu,自旋锁会占用cpu,等cpu把系统锁叫醒了之后,才开始运行执行时间短(加锁代码),线程数少,用自旋锁执行时间长,线程数多(可能包含执行时间短的),用系统锁(OS)...
2021-07-19 23:11:35
52
原创 线程笔记
线程同步,synchronized修饰符让线程变的安全如果使用synchronized锁方法的话,那么锁的就是对象本身,如果使用synchronized代码块,那么可以锁住任何对象,最好的就是锁住可能被多个线程同时访问的变化数据(可能被增删改的数据)对于普通同步方法,锁是当前实例对象,如果有多个实例,那么锁对象必然不同,无法实现同步对于静态同步方法,锁是当前类的class对象,有多个实例,但是锁对象是相同的,可以完成同步对于同步方法块,锁是synchronized括号是配置的对象,对象最好是只有一.
2021-07-18 23:35:56
69
原创 lambda表达式
Lambda表达式函数的话,只有参数列表和方法体(参数列表) –> {方法体}说明:( ) :用来描述参数列表{ } :用来描述方法体–> :Lambda运算符,可以叫做箭头符号,或者goes toclass test {public static void main(String[] args){LambdaTest lmtest = () –> {输出一句话;} // 调用时根据接口参数而定 } class interface LambdaT
2021-07-14 23:22:22
60
原创 线程
1、继承Thread类,重写run方法,使用start方法进行启动线程2、实现runnable接口,重写run方法,执行现场需要丢入runnable接口实现类,调用start启动线程好处:避免单继承的局限性,方便一个对象被多个线程使用3、实现callable接口需要返回值类型重写call方法,需要抛出异常创建目标对象创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);提交执行:Future result1=ser.sub
2021-07-13 23:06:25
56
原创 线程
1、继承Thread类,重写run方法,使用start方法进行启动线程2、实现runnable接口,重写run方法,执行现场需要丢入runnable接口实现类,调用start启动线程好处:避免单继承的局限性,方便一个对象被多个线程使用3、实现callable接口,需要返回值类型4、将文件路径下载到本地的jar包:commons-io-2.6.jar...
2021-07-13 22:45:49
49
原创 java基础day001
java.lang.Character的static isLowerCase()方法来检查字符串是否为小写字母java里唯一用逗号操作符的地方就是for循环的控制表达式,通过使用逗号操作符,可以在for语句内定义多个变量,但是它们必须具有相同的类型string类有一个方法:toCharArray(),它返回一个char数组Foreach快速迭代...
2021-06-29 22:32:25
43
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人