自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Thread类的使用

文章目录1 线程的状态2 上下文切换3 Thread类中的常用方法3.1 start() 方法3.2 run() 方法3.3 sleep() 方法3.4 yield() 方法3.5 join() 方法3.6 interrupt() 方法3.7 stop()方法 destroy()方法3.8 有关线程属性的几个方法4 Thread类中方法的调用对线程状态变化的影响1 线程的状态线程的状态包括:创建(new) 就绪(runnable) 运行(running) 阻塞(blocked , time w

2020-06-30 17:19:06 761

原创 线程的创建和多线程

文章目录1 Java中关于应用程序和进程相关的概念2 线程的特点3 线程的创建3.1 继承Thread类创建线程类3.2 实现 Runnable接口3.3 两种继承方式的区别4 多线程有几种实现同步方法 ?5 产生死锁的原因6 避免死锁1 Java中关于应用程序和进程相关的概念在Java中,一个应用程序对应着一个JVM实例(也有地方称为JVM进程),一般来说名字默认为java.exe或者javaw.exe(windows下可以通过任务管理器查看)。Java采用的是 单线程编程模型,即在 我们自己的程序

2020-06-30 16:43:20 599

原创 Java进程和线程

文章目录1 进程和线程出现的原因2 进程和线程的区别3 优缺点4 并发与并行1 进程和线程出现的原因最初,计算机只能接受一些特定的指令,用户输入一个指令,计算机就做一个操作。效率低下,出现了 批处理操作,但是,原来都是只有一个程序在计算机里运行 — 即 内存中始终只有一个程序的运行数据。进程的出现,就是为了让 内存中可以装多个程序(进程),每个进程对应着一定的内存地址空间。并且只能使用它自己的内存空间,各个进程间互不干扰。并且进程保存了程序每个时刻的运行状态,这样就为进程切换提供了可能。进程的出现

2020-06-30 16:11:33 178

原创 单例模式

文章目录1 单例模式解析2 常见实现方式2.1 饿汉式2.2 懒汉式2.3 双重检测锁式2.4 静态内部类式2.5 枚举单例参考资料1 单例模式解析单例模式的定义就是:确保某一个类只有一个实例,并且提供一个全局访问点单例模式的三个特点:只有一个实例自我实例化提供全局访问点单例模式的优缺点:优点:由于单例模式只生成了一个实例,所以能够节约系统资源,减少性能开销,提高系统效率,同时也能够严格控制客户对它的访问缺点:也正是因为系统中只有一个实例,导致了 单例类的职责过重,违

2020-06-23 15:39:49 159

原创 volatile 关键字

文章目录1 volatile关键字的两层语义2 volatile不能保证原子性3.volatile能保证有序性吗?4 使用volatile关键字的场景4.1 状态标记量4.2 double check1 volatile关键字的两层语义一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的禁止进行指令重排序先看一段代码,假如线程1先执行,线程2后

2020-06-23 12:00:05 197

原创 Java内存模型

文章目录1 概述1 原子性3 可见性4 有序性1 概述在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽各个硬件平台和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。Java内存模型 定义了程序中变量的访问规则 ,往大一点说是 定义了程序执行的次序。为了获得较好的执行性能,Java内存模型并没有限制执行引擎使用处理器的寄存器或者高速缓存来提升指令执行速度,也没有限制编译器对指令进行重排序。也就是说,在 java

2020-06-22 16:45:56 160

原创 Java if else不加花括号{}的用法

文章目录1 只有一对 if else 时,后面不加{},就近原则,只控制第一句2 多个 if else时,if else按照就近匹配的原则进行匹配,这时候,不加{},很容易出错3 总结今天看代码,发现有的 if else语句后面没有花括号 {}final void lock(){ if(compareAndSetState(0,1)) setExclusiveOwnerThread(Thread.currentThread()); else acquire

2020-06-18 11:18:46 10216

原创 Java关键字 volatile

volatile 的 作用:1 保证了变量的 可见性 :被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象2 当操作该volatile变量时,所有前序对该变量的操作都已完成(如不存在已变更,但未写回主存的情况),所有后续对该变量的操作,都未开始3 volatile只能保证变量的可见性,不能保证对volatile变量操作的原子性参考文章...

2020-06-17 15:30:06 125

原创 Java原子性操作及应用

文章目录1 原子性2 原子性操作3 Java原子性操作的理解(赋值和自增自减)3.1 赋值操作是否是原子性 --- 不是3.2 自增自减操作是否是原子性 --- 不是1 原子性原子性:一个操作,或者多个操作,要么全部执行并且执行的过程中 不会被任何因素打断,要么就 都不执行2 原子性操作和原子性是一个意思,不需要 synchronized。指不会被线程调度机制打断的操作,这种操作,一旦开始,就一直运行到结束,中间不会有任何 context switch原子操作可以是一个步骤,也可以是多个操作

2020-06-17 15:21:39 272

原创 Java关键字 --- final

final 可以用来修饰 类,方法,变量(成员变量和局部变量)1 修饰类表明这个类不能被继承,final 类中的所有成员方法都会被隐式的指定为 final方法在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类2 修饰方法可以把该方法锁住,被 final 修饰的方法,在子类中不能被覆盖类的 private方法,会隐式得被指定为 final方法3 修饰变量final 变量,如果是基本数据类型的变量,则其数值,一旦初始化

2020-06-16 14:30:36 117

原创 Java的值传递与引用传递

文章目录1 概述2 值传递3 引用传递3.1 一般的引用传递3.2 方法参数为包装类型的引用传递3.3 引用传递在方法中改变引用地址的情况参考文章1 概述Java的实参和形参之间的数据传递分为:值传递与引用传递,只需牢牢记住一点:这两种类型都是将外面的参数变量拷贝一份到局部变量中,基本类型为值拷贝,引用类型就是将引用地址拷贝一份。值拷贝:形参得到的是拷贝的值,形参怎么变,都不会影响实参引用地址拷贝:拷贝的是引用地址,形参和实参指向的是同一个引用地址,形参的改变会影响实参。只要在方法中,形参没有

2020-06-16 11:43:26 142

原创 Android接口回调

文章目录1 接口回调概述2 内部类形式3 实现接口的形式4 三个类之间的数据传递参考文章1 接口回调概述在 Android开发中,很多地方都用到了回调。回调就是 把 方法的定义 和 功能导入实现 分开的一种机制,目的是为了解耦。它的本质是基于 观察者模式 ,即观察者设计模式的的简化版。在下载时候的进度回调,在adapter与activity之间的回调,在javabean和fragment以及fragment之间的回调等等回调的目的主要有两个:1 传递数据 2 保持数据的同步更新

2020-06-15 16:12:05 736

原创 Java 内部类实例

为什么需要 Java内部类1 每个内部类都能独立的继承一个接口的实现,所以无论外部类是否已经继承了某个(接口的)实现,对于内部类都没有影响。内部类使得多继承的解决方案变得完整2 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏3 方便编写事件驱动程序4 方便编写线程代码1 根据注释填写 1 2 3 处的代码public class Test { public static void main(String[] args) { // 初始化 Bean1

2020-06-15 14:33:20 216

原创 Android Context

Context

2020-06-11 14:00:35 103

原创 接口回调

文章目录1 理解2 具体解析3 具体实例3.1 Boss通知员工做事情,员工完成任务之后告诉Boss完成情况。3.2 A让室友帮忙做作业 --- 使用匿名内部类实现1 理解编程分为两类:系统编程(库/函数),应用编程(应用/函数)。一般,库函数会提供 API(接口),拿过来直接用就好,但是有时候为了更加灵活的编程,有些库函数会要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的,后又被调用的函数,称为回调函数旅馆提供 叫醒服务,但是要求旅客自己决定叫醒的方法。可以是打客房电话

2020-06-09 12:34:28 213

原创 Java static final的用法和意义

static   finalstatic作用于成员变量,用来表示,在内存中只保存一份副本,即在内存中只有一个,静态变量被所有对象所共享,但是它可以被重新赋值fianl修饰类,类不能被继承,修饰方法,不可以被覆盖,修饰的变量,为常量,不能被修改final如果修饰的成员变量是基本类型,则表示这个变量的值不能改变如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的public static final 和 public fina

2020-06-02 00:17:12 389

原创 Java变量类型

在 Java中,变量在使用前,必须先声明Java语言支持的变量类型有:类变量(静态变量),实例变量,局部变量,引用变量类变量(静态变量):独立于方法之外的变量,用 static修饰实例变量:独立于方法之外的变量,不过没有static修饰局部变量:类的方法中的变量引用变量:数组类型,类类型,接口public class Variable{ static int allClicks = 0; // 类变量 String str = "hello world"; // 实例变量

2020-06-01 17:15:43 106

原创 String深入理解

1 String对象存放位置1) 直接指定内容的String对象存放在字符串常量池中String s1 = "Hello";String s2 = "Hello";System.out.println(s1 == s2); // trues2直接指向s1的内存地址,两者公用同一个字符串,都在常量池中2) 只有使用引号包含文本方式创建的String对象之间使用"+"链接产生的新对象才会被加入到字符串池中,其他的要在堆中创建即只有常量用"+"连接才放入字符串池中String s7 = "H

2020-06-01 14:27:19 223

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除