- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 ThreadLocal 详解
ThreadLocal 概述ThreadLocal类用来提供线程内部的局部变量,不同的线程之间不会相互干扰这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量在线程的生命周期内起作用,可以减少同一个线程内多个函数或组件之间一些公共变量传递的复杂度使用常用方法方法名描述ThreadLocal()创建ThreadLocal对象public void set( T value)设置当前线程绑定的局部变量publ
2022-04-19 11:12:54
25474
7
原创 原子类详解
Unsafe概述Unsafe对象提供了非常底层操作内存、线程的方法该类只提供了一个私有的无参构造,且Unsafe的定义是一个的私有成员变量,源码如下public final class Unsafe { //私有成员静态变量 private static final Unsafe theUnsafe; // 构造器 private Unsafe() { }由上一点可知Unsafe对象只能通过反射获取,不能直接创建,获取方式如下public
2022-04-14 10:16:00
1995
2
原创 volatile 详解
Java 内存模型(Java Memory Model)JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等JMM主要体现在以下几个方面原子性(多写多读):保证指令不会受到线程上下文切换的影响可见性(一写多读):保证指令不会受到CPU缓存的影响有序性:保证指令不会受到CPU指令并行优化的影响原子性问题—得不到预期值public class AtomQuestion { static int c
2022-04-12 20:31:31
414
原创 Synchronized 详解
语法 synchronized(锁对象) // 线程1, 线程2(blocked){ 临界区}注意如果 t1 synchronized(obj1) 而 t2 synchronized(obj2) 会怎样?此种方式相当于多个线程持有不同的锁,不会起到保证临界区代码是原子性操作,达不到预期如果 t1 synchronized(obj) 而 t2 没有加会怎么样?此种方式相当于一个线程持有锁一个线程没有锁,不会起到保证临界区代码是原子性操作,达不到预期方法上的synchronized形式
2022-04-12 16:22:39
2756
1
原创 多线程相关方法
Thread相关方法run() 与 start()package com.yanxb.method.threadmethod;import com.yanxb.util.MyTool;/** * 测试 run()方法 和 start()方法 * * */public class TestRunAndStart { public static void main(String[] args) { test01(); } /** * 直接调
2022-04-10 11:22:58
112
原创 多线程停止
测试代码 public static void main(String[] args) throws InterruptedException { // 方式一 TPTInterrupt t = new TPTInterrupt(); // 方式二 TPTVolatile t1 = new TPTVolatile(); t.start(); Thread.sleep(3500); MyTool
2022-04-06 10:11:19
90
原创 多线程创建方式
方式一:继承Thread/** * 方法一:继承Thread类,作为线程对象存在(继承Thread对象) * */public class Way01 extends Thread{ public Way01(String name) { super(name); } @Override public void run() { while (!interrupted()){ MyTool.printTimeA
2022-03-31 16:09:23
303
原创 并发编程总结
多线程的创建方式继承Thread类Thread + RunnableThread + 匿名内部类Java8 Lamda表达式Thread + FuturnTask + Callable(可获取返回值)Timer + 匿名内部类线程池 + 任务详情链接:Callable 与 Runnable的区别抽象方法不同Callable抽象方法为:call()方法Runnable抽象方法为:run()方法返回值不同Callable的返回值为泛型TRunnable没有返回值为异常处理不
2022-03-31 15:03:28
575
原创 数据库事物
事物(transation)基本概述一个事物其实就是一个完整的业务逻辑,是最小的工作单元,不可再分。只有DML语句才会有事物,其他语句与事物无关。本质上,事物就是多条DML语句同时成功,或同时失败。SQL分类DQL(Data Query Language):数据查询语言,关键字:select。DML(Data Manipulation Language):数据操纵语言,关键字:insert,delete,update。DDL(Data Definition Language):数据库定
2021-08-11 09:38:53
310
原创 JAVA中逻辑运算符“|”和“&”与“||”和“&&”的用法
1.使用规则:(1)& 可以用作逻辑与的运算符,表示逻辑与(and) a、当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false b、无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断(2)&& 可以用作逻辑与的运算符,表示逻辑与(and) a、当运算...
2018-11-28 10:28:42
5297
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人