java
文章平均质量分 79
qq_24904257
这个作者很懒,什么都没留下…
展开
-
this关键字的作用
如下: package com.interview.javabasic.java; public class Chirdren extends Parent { public static void main(String[] args) { Parent parent=new Chirdren(); parent.test(); //运行结果如下 // 1,1,test2 } @Override p原创 2020-05-11 16:00:37 · 194 阅读 · 0 评论 -
shardingsphere分库分表多表关联查询
shardingsphere分库分表表关联查询的应用 1.准备工具mysql 2.sql语句如下; demo_ds_0数据源表结构 CREATE DATABASE demo_ds_0 CHARSET=utf8; use demo_ds_0; DROP TABLE IF EXISTS t_user_0; CREATE TABLE t_user_0 ( user_id bigint(20) AUTO_...原创 2020-04-23 15:39:29 · 13795 阅读 · 2 评论 -
关于java中final理解
java语言中,如果共享对象是一些基本数据类型,只需要用final修饰,就可以保证该类为不可变类 如果贡献对象是一个对象,则需要在对其构造进行深度克隆 ...转载 2019-06-30 10:43:18 · 169 阅读 · 0 评论 -
java的编译过程
原创 2019-06-20 20:52:04 · 128 阅读 · 0 评论 -
jvm中分派的理解
静态分派指的是重载,动态分派指的是重写 静态分派: public class StaticDispatch { static abstract class Human{ } static class Man extends Human{ } static class Woman extends Human{ } public static void sayHello(Human...原创 2019-06-15 15:20:55 · 167 阅读 · 0 评论 -
final初始化时间
final初始化时间为在构造方法完毕前。(非静态的常量) 如以下: /* final修饰变量初始化时机 A:被final修饰的值只能赋值一次 B:在构造方法完毕前。(非静态的常量) */ class Demo{ //int num = 10; //final int num2 = 20; int num; final int num2; { //...原创 2019-06-18 20:50:09 · 842 阅读 · 0 评论 -
关于jvm-java中init与clint区别
init是instance实例构造器,对非静态变量解析初始化,而clinit是class类构造器对静态变量,静态代码块进行初始化 class X { static Log log = LogFactory.getLog(); // <clinit> private int x = 1; // <init> X(){ // <i...翻译 2019-06-12 20:05:34 · 771 阅读 · 0 评论 -
compareAndSet示例
原创 2019-04-25 21:22:56 · 456 阅读 · 0 评论 -
多线程安全之automic
import java.util.concurrent.atomic.AtomicInteger; /** volatile不具备synchronized关键字的原子性(同步) AtomicInteger具备原子性(同步) */ public class VolatileNoAtomic extends Thread{ //private static volatile int count...转载 2019-04-25 20:07:05 · 1570 阅读 · 0 评论 -
关于局部变量就是线程安全的理解
网上看到好多定论说是局部变量就是线程安全的。但是我觉得对大家都造成了一些误解,例如 以下; package Test; public class Demo_5 { public static void main(String[] args) { //创建一个窗口 TicketWindow tw1=new TicketWindow(); //使用三个线程同时启动 Thread t...原创 2019-04-05 11:39:50 · 955 阅读 · 1 评论 -
组合实现多线程安全
关于ImproveList我前前后后消化了很长时间! // 4-16 通过组合实现“若没有则添加” @ThreadSafe public class ImprovedList implements List { //实现List接口 private final List list; /** * PRE: list argument is thread-safe...原创 2019-03-07 19:58:49 · 159 阅读 · 0 评论 -
不可变类理解
不可变类,没有setter方法原创 2019-03-07 15:00:50 · 180 阅读 · 0 评论 -
不可变类在先判断后执行条件下注意点
对于有条件线程安全类(该类是不可变类),如果遇到需要进行有先判断后执行的时候,则需要进行使用加监视器的方式,避免竞争,但是如果没有进行先判断后执行,则可以不使用监视器模式,因为线程安全类可以被代理,但是该本类的成员变量应该欸final ...原创 2019-03-07 14:35:48 · 139 阅读 · 0 评论 -
原始数据与不可变条件
不可变类: 是指当创建了这个类的实例后,就不允许修改它的属性值。在JDK的基本类库中,所有基本类型的包装类,如Integer和Long类,都是不可变类,java.lang.String也是不可变类。 不可变类: 当你获得这个类的一个实例引用时,你不可以改变这个实例的内容。不可变类的实例一但创建,其内在成员变量的值就不能被修改。 如何创建一个不可变类? 这道题90%以上的人都会被挂或者只回答一半对,...原创 2019-03-07 11:29:59 · 196 阅读 · 0 评论 -
深入理解java线程安全
static创建对象是线程安全的,因为jvm对线程是存在安全机制, 如class oneValueCache他是一个不可变对象,然后3-13清单是一个非可变对象,但是他是线程安全的,因为,req和resp都是局部变量,所以i与factors是安全的,虽然lastNumber没有使用深度复制,但是我存的都死巨变变量,多线程之间互不影响,另外cache使用了volatile,将对象刷新到内存中,使得...原创 2019-03-06 15:28:35 · 248 阅读 · 0 评论