自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 问答 (2)
  • 收藏
  • 关注

原创 两个线程交替打印语句

来源于leetcode1115题目我们提供一个类:class FooBar {public void foo() {for (int i = 0; i < n; i++) {print(“foo”);}}public void bar() {for (int i = 0; i < n; i++) {print(“bar”);}}}两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另一个线程将会调用 bar() 方法。.

2020-10-30 18:13:59 135

原创 多线程按顺序打印

多线程按顺序打印来源于leetcode1114我们提供了一个类:public class Foo {public void first() { print(“first”); }public void second() { print(“second”); }public void third() { print(“third”); }}三个不同的线程将会共用一个 Foo 实例。线程 A 将会调用 first() 方法线程 B 将会调用 second() 方法线程 C 将会调用

2020-10-29 21:00:42 571

原创 Thread的几种方法和线程状态

Thread的方法1.sleep睡眠几秒钟,让出CPU让别人执行。2.yield短暂的让一下CPU,谁能抢到就执行,抢不到还是原来的执行。3.join有ab两个线程。a线程在某一时刻调用了join(b线程),此时a线程sleep,直到b线程执行结束,a继续执行。注意自己join自己是不行的。4.getState得到线程的状态、一共六种:...

2020-10-29 19:11:44 305

原创 Future类的使用和原理

java异步接口Future和CallableFuture是Concurrent包提供的一种异步得到结果的接口。Future接口:public interface Future<V> { // 取消当前的计算 boolean cancel(boolean mayInterruptIfRunning); // 计算是否被取消 boolean isCancelled(); // 计算是否已经结束 boolean isDone(); //

2020-10-29 19:05:04 1405

原创 ConcurrentHashMap源码解析

jdk1.8ConcurrentHashMap解析本文部分内容来源于互联网和jdk1.8源码,如有不对请谅解并指正1、前言ConcurrentHashMap是一种同步的map,因为HashMap在多线程情况下不安全,而HashTable锁粒度又太大,所以出来了ConcurrentHashMap。正式开始之前,先说明一个参数,这是HashMap里面没有的。sizeCtl/** * Table initialization and resizing control. When negat

2020-10-29 19:02:29 368

原创 AQS源码解析

AQS源码解析

2020-10-29 19:00:53 464 1

原创 强软弱虚四种引用介绍

强软弱虚四种引用1.强User u = new User()正常写的引用都是强引用,JVM会根据是否可达判断是否要回收。2.软SoftReference<byte[]> res = new SoftReference<>(new byte[1024]);res里面的byte数组是软引用,只有在内存不够用时候才会被回收。用途: 缓存信息。3.弱引用WeakReference<Object> m = new WeakReference();System

2020-10-29 18:56:21 4583 1

原创 JUC包一些锁的介绍和使用

JUC包的这些锁都是基于AQS的实现,关于AQS还请看下一篇文章一、ReentrantLock可重入锁独占锁,synchronized就属于可重入锁。Lock可以替代synchronized锁代码块。public void test() { synchronized (this) { try { Thread.sleep(1000); } catch (InterruptedException e) .

2020-10-29 18:51:39 570

原创 CAS、synchronized和volatile

一.CASCASnative方法。修改一个值,当前为0,现在要加一,在写回的时候,判断该变量是否还是0,。ABA问题CAS会有一个问题,如果该变量还是0,不一定代表他没有被人修改过。比如另一个线程对他加2,然后又被减2,虽然最后还是0,但是他不是最开始的那个0.解决办法:可以加一个bool表示是否修改过加一个版本号CAS底层汇编实现用 AtomicInteger 一步一步查到最后。java native代码->虚拟机jvm的c++代码->linux的汇编代码lock

2020-10-29 18:44:15 185

原创 Java单例模式代码实现和DCL和volatile详细解析

网上搜一下单例模式发现都没有说的很全面的,所以总结一下饿汉式饿汉式没有线程安全问题,在类加载时就会初始化一个对象,每次 getInstance()得到的也是原来的对象。class Singleton { private static final Singleton singleton = new Singleton(); private Singleton(){} public static Singleton getInstance() { return .

2020-10-28 21:09:49 407

原创 git在commit时候不commit某些文件

前言不commit某些文件分为两种情况。这个文件不push。已经push上去了,但是不想让后续的改动生效。比如含有密码的配置文件。第一种情况对于第一种情况,可以用gitignore文件解决,在最开始写好gitignore,然后git add .时候就不会将这些路径的文件add进去,这样自然不会commit,仓库里也不会有这个文件。下面是idea自动生成的springboot项目的gitignore一部分。HELP.mdtarget/!.mvn/wrapper/maven-wrapper.

2020-10-15 14:06:14 3526

原创 wireShark抓取本地http包,分析状态

WireShark使用正常的WireShark是无法抓取localhost包的,所以需要安个插件。https://github.com/nmap/npcap。正常对应着自己的需求安装就行了。抓包首先是用postman发送http包。postman对于Connection项只能关掉原来的,新写一个。然后我们看第一次connection:close的情况。Connection:Close最上面的过滤器内容是 ip.addr == 127.0.0.1 && ip.dst ==

2020-10-14 22:46:59 3788

空空如也

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

TA关注的人

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