java基础
文章平均质量分 77
Lehends_on_win
gogogo
展开
-
Java线程的状态及主要转化方法
Java线程的状态及主要转化方法 操作系统中的线程状态转换 在操作系统中,线程是被视为轻量级进程的,所以操作系统的线程状态其实和操作系统进程状态是一致的 操作系统线程主要有以下三个状态: 就绪状态(ready):线程正在等待使用CPU,经调度程序调用之后可进入running状态 执行状态(running):线程正在使用CPU 等待状态(waiting):线程经过等待事件的调用或者正在等待其他资源(如I/O) Java线程的6个状态 // Thread.State 源码 public enum Sta原创 2021-12-05 21:52:58 · 305 阅读 · 0 评论 -
Java多线程入门类和接口
Java多线程入门类和接口 Thread 常用方法: currentThread():静态方法,返回对当前正在执行的线程对象的引用 start():开始执行线程的方法,jvm会调用县城内的run方法 yield():当前线程让出对当前处理器的占用,但是要注意的是,就算线程调用了yield,程序在调度时还有可能继续运行这个线程的 sleep():使当前线程睡眠一段时间 join():是当前线程等待另一个线程执行完毕之后再执行,内部调用的是wait方法实现的 Callable,Future与FutureTa原创 2021-12-05 21:49:24 · 407 阅读 · 0 评论 -
Java Introspector(内省)
Java Introspector(内省) 什么是内省? Introspector是专门用来处理javaBean的工具类,用来访问某个属性的getter/setter方法 JavaBean又是什么呢? JavaBean是一种特殊但又不完全特殊的类,主要用于传递数据信息。类中的方法主要用于访问私有字段,字段具备getter和setter方法 如果需要在两个类之间传递信息,可以将信息封装进JavaBean中,这种对象称之为值对象(Value Object)或者是VO JavaBean的信息在Introspect原创 2021-10-27 09:30:00 · 100 阅读 · 0 评论 -
深入解析反射机制
深入解析Java反射 什么是反射? 反射是允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性 在运行时分析类的能力 在运行时查看对象 实现通用的数组操作代码 利用Method对象,这个对象很像cpp中的函数指针 反射的主要用途 当我们使用idea时,输入一个对象或类向调用它的属性或方法时,编译器会自动列出它的属性或方法,这里就应用了反射 反射最重要的应用是开发各种通用框架 反射的基本运用 获取Class对象 使用Class类的forName静态方法 public static原创 2021-10-26 21:21:22 · 71 阅读 · 0 评论 -
Java中的锁
Java中的锁 Lock接口 使用synchronized关键字将会隐式地获取锁,但是它将锁的获取和释放固化了,Lock却拥有锁获取与释放的可操作性,可中断的获取锁以及超时获取锁的便携性 队列同步器AQS 主要使用方式是继承:子类通过继承同步器并实现它的抽象方法来管理同步状态(getState(),setState()和compareAndSetState) 同步器是实现锁的关键,在锁的实现中聚合同步器,利用同步器实现锁的语义。锁是面对使用者的,隐藏了实现细节;同步器面对的是锁的实现者,它简化了锁的实现方式原创 2021-10-10 19:15:25 · 52 阅读 · 0 评论 -
Java并发容器和Java线程池
Java并发容器和Java线程池 ConcurrentHashMap ConcurrentHashMap是线程安全且高效的HashMap 为什么要用ConcurrentHashMap呢? 因为在并发编程中使用HashMap可能会导致程序死循环,而使用线程安全的HashTable效率又非常低下 HashMap 在多线程环境下,因为有并发状况,所以不能使用HashMap。HashMap在并发执行put操作时会引起死循环,这是因为多线程会导致HashMap的Entry链表形成环形数据结构 HashTabl原创 2021-10-10 19:14:54 · 124 阅读 · 0 评论 -
Java原子类和JMM
Java原子类和JMM JMM Java线程之间的通信由Java内存模型控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见 重排序 as-if-serial语义 不管怎么重排序,程序的执行结果不能被改变,编译器,runtime和处理器都必须遵守as-if-serial语义 JMM的顺序一致性 数据竞争和顺序一致性 如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序,程序的执行讲具有顺序一致性,即程序的执行结果与该程序在顺序一致性内存模型中的执行结果相同 顺序一致性模型 有两大特性原创 2021-10-10 19:14:24 · 54 阅读 · 0 评论 -
Java多线程核心技术-单例模式与多线程
立即加载/饿汉模式 立即加载是指使用类的时候已经将对象创建完毕,常见的实现方法,是直接用new实例化。立即加载有”着急“”迫切“的意思,所以也称为”饿汉模式“ 在立即加载中,调用方法前,实例已经被工厂创建了 public class MyObject { //立即加载方式 private static MyObject myObject = new MyObject(); private MyObject(){ } public static MyO原创 2021-08-20 01:11:11 · 71 阅读 · 0 评论 -
Java多线程核心技术-volatile和sychronizd关键字
synchronized synchronized关键字可以保障原子性,可见性和有序性 线程不安全 非线程安全问题会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是”脏读“,什么是脏读呢?mysql事务中的脏读和这个很类似,读取到的数据是被更改过的。 线程安全是指获得实例变量的值是经过同步处理的,不会出现脏读 public class safe { public void add(String username){ int num = 0;//方法内 }原创 2021-08-19 21:24:59 · 247 阅读 · 0 评论 -
Java多线程核心技术-基本介绍及常用Api
多线程优点 使用单线程会有什么情况出现呢?在同一时间只能执行一个任务,CPU利用率大幅度降低 使用多线程可以在同一时间内执行更多不同的项目,系统和CPU的运行效率大大提升。使用多线程就是使用异步。 那么什么时候使用多线程呢? 出现阻塞,系统中出现阻塞线程,可以使用多线程提高效率 依赖,当两个业务的执行不会互相依赖时可以使用多线程提高效率,如果互相依赖则可以不使用多线程,按顺序进行业务的执行 使用多线程 每当有一个进程正在运行时至少有一个线程在运行 例如我们常见的psvm public class Tes原创 2021-08-19 15:47:16 · 156 阅读 · 0 评论 -
Java-输入流和输出流
流 流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 Java的IO流 流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 按照流的角色来分,可以分为节点流和处理流 ...原创 2021-06-19 15:18:33 · 101 阅读 · 0 评论 -
Java-异常处理
异常机制 Java的异常机制主要依赖于try,catch,finally,throw,throws五个关键字,可以让程序具有极好的健壮性。 1,try catch捕获异常 try{ //业务实现代码 } catch (Exception e){ System.out.println("输入不合法"); goto retry } 如果业务代码块出现异常,系统会生成一个异常对象,这个过程称为抛出异常。 2,异常类的继承机制 每个catch块都是专门用于处理该异常类及其子类的异常实例。原创 2021-06-15 23:08:43 · 71 阅读 · 0 评论 -
Java-泛型
事实上并不存在泛型类,因此static和初始化中不允许使用泛型形参原创 2021-06-15 21:45:34 · 1192 阅读 · 3 评论