摘要: package com.primary.test; public class Test1 { public static void main(String[] args) { int i = get(3); System.out.println(i); } /** * n的阶乘 */ public 阅读全文
posted @ 2020-09-26 20:35 姚狗蛋 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 如果这个是面试官直接问你的问题,你会怎么回答? 一个专业的描述是, 当多个线程访问一个对象时,如果不用进行额外的同步控制或其他的协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个对象是线程安全的 那么我们如何做到线程安全? 实现线程安全的方式有多种,其中在源码中常见的方式是,采用sync 阅读全文
posted @ 2020-09-26 18:15 姚狗蛋 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 有哪几种方式? 继承Thread 实现Runnable接口 实现Callbale接口 但实际后两种,更准确的理解是创建了一个可执行的任务,要采用多线程的方式执行, 还需要通过创建Thread对象来执行,比如 new Thread(new Runnable(){}).start();这样的方式来执行。 阅读全文
posted @ 2020-09-26 17:22 姚狗蛋 阅读(112) 评论(0) 推荐(0) 编辑
摘要: info 比如 线程不安全类:hashmap,arraylist 线程安全:stringbuffer,concurrenthashmap 在多线程环境下,对一个对象访问,不需要额外加锁(synchronized),就可以,那这个对象就是线程安全. 比如stringBuffer 因为这个每个方法都加了 阅读全文
posted @ 2020-09-26 16:02 姚狗蛋 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 区别 先说== 如果是基本类型,那就比较值 如果引用,比较内存地址 那equals()呢? 这是Object的方法,默认比较也是地址,因为这个方法的最初定义在Object上,默认的实现就是比较地址 自定义的类,如果需要比较的是内容,那么就要学String,重写equals方法 看一个案例 Strin 阅读全文
posted @ 2020-09-26 15:32 姚狗蛋 阅读(83) 评论(0) 推荐(0) 编辑