- 博客(9)
- 问答 (2)
- 收藏
- 关注
原创 ThreadLocal探究
什么是ThreadLocal??ThreadLocal又叫本地线程变量,在多线程并发执行的过程中,我们可以将某个变量存入ThreadLocal中,那么这个变量就可以看作专属于是该线程的本地变量,并且不受其他线程的干扰,从而达到对变量的安全访问,这是一种典型的空间换时间的做法,在某些情况下,使用ThreadLocal保证变量的线程安全,比使用锁机制更加简单并且有更高的执行效率。ThreadLocal中有三个重要的成员方法set(T value); 设置当前线程在线程本地变量实例中绑定的值get()
2022-05-20 07:58:35
391
1
原创 线程池类——ThreadPoolExecutor
线程池深入线程池的架构线程池的顶层接口Executor接口只定定义了一个方法execute(Runnable task);即提交异步任务的方法,它的子接口ExecutorService接口在它的基础上定义了能够获得异步返回结果的提交方法Future submit(Callable task);我们经常使用的线程池快捷创建工厂Executors,标准线程池创建类DefaultThreadPoolExecutor都是实现了该接口,DefaultThreadPoolExecutor定义了Execrt
2022-05-17 21:35:11
356
原创 线程的生命周期
线程的生命周期java中的线程调度都是委托给操作系统完成的,操作系统采用平均分时策略或抢占式策略进行线程的调度,一般的操作系统都是采用抢占式策略策略,所以java中的线程调度也属于抢占式调度策略,这种策略依赖于线程的优先级,抢到cpu时间片的概率就大,时间就长。Thread类中的priority属性定义了java中线程的优先级,可以通过setPriority(int priority);方法进行设置,默认为5,1最小,10最大。翻看Java的源码,我们可以看到有关线程状态的属性threadState,和
2022-05-16 08:08:56
197
原创 创建线程的四种方式
创建线程的四种方式方式一:继承Thread作为最简单的一种创建线程的方式,它适用于让各个线程独自完成各自任务的场景,thread类中定义了线程的id,name,priority,daemon,threadStatus线程状态,以及一个非常重要的属性target。使用继承Thread的方式创建一个线程:public class MyThread extends Thread{ @Override public void run(){ //业务逻辑 }}public class Demo(
2022-05-15 09:28:27
423
原创 进程和线程的区别
进程和线程的区别要弄清楚进程和线程的区别,首先得搞清楚进程和线程的定义进程计算机中,应用程序以进程的形式运行在操作系统中,它是操作系统资源分配的最小单位,一般来说,进程由三个部分组成1.代码段 :即进程中所有指令在内存中的位置2.数据段 :即进程中操作的数据在内存中的位置3.进程控制块:包含了进程的一些基本信息进程的描述信息:进程id,进程名,进程状态(就绪,阻塞,运行等),进程优先级进程的调度信息:主要包含了进程起始指令的内存地址以及进程通信的信息进程的资源信息:包含了内存信息,io设备
2022-05-15 07:50:03
94
原创 JAVA的反射机制
JAVA的反射机制这是一种给动态获取java类信息的机制,指在java运行的过程中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意对象都能够调用它的任意属性和方法。反射机制的主要功能1.加载运行时才能确定的数据类型2.获取类的内部信息,解析类的结构,分析类的能力3.对类或实例进行方法调用,属性操作,创建新对象等操作Class类class类作为Java中一种特殊的类,它封装了装入到JVM中的类的详细信息,通过它可以实现对类的信息获取,这也是java反射机制的根本。通常需要先获取类的c
2022-01-17 10:43:12
151
原创 栈的线性和链式存储实现
栈的抽象数据类型定义ADT Stack{数据对象:D={a0,a1,a2…an }是同一种数据类型的元素数据关系:r={<ai,ai+1>}基本操作:getSize();返回元素个数isEmpty (); 判断是否为空push(Object) 入栈pop();出栈peek();获取栈顶元素}数组实现栈Object [] elements; public static final int DEFAULT_CAPACITY = 5; int top;
2022-01-13 09:53:16
77
原创 线性表的顺序和链式存储实现
1.线性表的顺序存储,需要在内存中找到一块连续的空间,容易造成空间冗余,但由于是利用数组实现的关系,根据数组的下标可以精确快速的进行查询操作,但在进行增删操作时需要对其余元素进行移动,且涉及扩容,所以增删操作效率较低,在进行注重查询的业务时建议使用。public Object [] elements; private int size; private final int DEFULT_CAPACITY = 8; public MyArrayList(){ ele
2022-01-13 09:49:10
228
原创 JAVA一维数组的几种基本排序法
// 以下都以从小到大的写法1.冒泡排序原理: 将相邻左右两个元素依次比较大小,不符合条件就交换位置for(int i = 0; i < arr.length ; i++){ //进行的轮数 for(int j = 0; j < arr.length - 1; j++){ if(arr[j] > arr[j+1]){ //前后比较,大的数交换到后边去 int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tem
2021-08-27 12:03:12
2271
空空如也
求解mybatis输出的是这样的怎么解决呀
2021-11-20
为什么这两种定义出来运行结果会不一样。。
2021-08-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人