240 发简信
IP属地:浙江
  • 120
  • 120
    类加载器

    自低向上检查该类是否已经加载 自顶向下进行实际查找和加载 这里用双亲委派,主要出于安全来考虑,不会让随意的class加载进去 自定义的类加载器 继承ClassLoader,重...

  • 120
    线程池

    ThreadPoolExecutor 当有任务进入线程池时,如果核心线程数没满,则创建去运行, 当核心线程数满了,会放入等待队列等待, 这时候,如果等待队列满了,又有新的任务...

  • 120
    弱引用,软引用

    强引用,只要有引用指向一个对象,对象就不会被回收 软引用,一个对象只有一个软引用指向它,当系统内存不够用的时候,会回收软引用指向的对象,内存够用不会回收它。 弱引用,一个对象...

  • ThreadLocal

    ThreadLocal,线程之间隔绝。 输出: 上面代码,在一个线程中设置 tl.set(new Person()),在另一个线程中tl.get()的是null。在Threa...

  • LockSupport

    示例用法: LockSupport.park() 对应一个LockSupport.unpark(),类似于一个计数 上面这样的话,线程就不会阻塞。

  • Object的wait(),notify()

    wait() 阻塞,释放锁 notify() 通知阻塞的那个线程到就绪状态,但不是让出锁给他,被唤醒的线程要运行必须得获得锁。 示例:

  • Semaphore

    示例用法:

  • Java 变量参数传入方法,修改后是否影响外面的值

    今天在公司做的一个订购成功后发送给用户的邮件时,见到了之前别人留下来的一个问题。类似于下面这样的代码: main函数中外部有一个persons对象,传入test函数中,tes...

  • 经典生产者和消费者

    实现一个同步容器,有2个生产者线程,10个消费者线程。 这里是用了notifyAll();会存在一个问题,比如此时容器满了,消费者notifyAll(),可能会被其他消费者拿...

  • CyclicBarrier

    简单用法: 输出:

  • CountDownLatch

    简单介绍CountDownLatch的用法 上面意思是,当其他线程执行完到latch -> 0,主线程才会在latch.await() 继续执行下去,不然就会等待。也可以用j...

  • ReentrantLock 可重入锁

    boolean tryLock(long time, TimeUnit unit) Lock lock = new ReentrantLock();lock.tryLock(...

  • CAS(无锁优化,自旋)

    Copmare And Set/Swap cas(V,E,N) ,cpu原语支持,中间不被打断。V - 要改的值E - 我期望的这个值是多少N - 要设置的新值 可以这...

  • volatile

    保证线程可见性缓存一致性协议 禁止指令重排序JMM ,内存屏障 这个可以看单例模式的双重检查 线程可见性含义: 每个线程运行的时候,会先去主内存拷贝一份数据到自己的工作内存当...

  • synchrozied

    java中的每个对象都可以作为锁,(不要用String,Integer,Long),当synchrozied 在不同位置,锁的对象不一样: 普通同步方法,锁是当前实例对象 静...

  • 120
    sleep,join,线程状态

    Thread.sleep(500);当前线程在cpu中睡个500ms,让给别的线程去运行。sleep完回到就绪状态 Thread.yield();让出cpu一会,返回就绪状态...

  • 120
    mysql日志

    1.Redo日志—innodb存储引擎的日志文件 当发生数据修改的时候,innodb引擎会先将记录写到redo log中, 并更新内存,此时更新就算是完成了,同时innodb...

  • 120
    mysql索引相关知识

    聚簇索引:数据和文件放在一起:InnoDB.frm:存放的是表结构,.ibd:存放的是数据文件和索引文件。 非聚簇索引:数据和索引单独一个文件:MyISAM.frm:存放的是...