java
煮酒弄茶zzz
做好自己的事。
展开
-
三大排序:快排,归并,堆排
三大排序:快排,归并,堆排 快排 平均O(nlogn),最坏O(n),不稳定 Note: 先从右边j找第一个小于base的,放到左边i 再从左边i找到第一个大于base的,放到右边j 最后赋值base。 一次遍历交换一次 不要两个遍历后再交换,容易出错 package sort; public class QuickSort { public static void quickSort(int[] nums, int l, int r) { if (l >= r) {原创 2021-09-02 14:40:49 · 169 阅读 · 0 评论 -
多线程交替打印(奇偶 / 0102...)
多线程交替打印(奇偶 / 0102…) synchronized解决 public class EvenOdd { public static void main(String[] args) { EvenOddPrint evenOdd = new EvenOddPrint(); new Thread(() -> { try { evenOdd.evenPrint(); } ca原创 2021-08-24 17:01:15 · 183 阅读 · 0 评论 -
单例模式!
单例模式 保证只有一个实例的类 适用场景 需要生成唯一序列的环境 需要频繁实例化然后销毁的对象。 创建对象时耗时过多或者耗资源过多,但又经常用到的对象。 方便资源相互通信的环境 code 饿汉式 public class HungrySingleton { private static HungrySingleton instance = new HungrySingleton(); private HungrySingleton() {} public static Hun原创 2021-08-18 15:20:15 · 95 阅读 · 0 评论 -
多线程生产者消费者PV code
synchronized public class PVTest { public static void main(String[] args) { PV pv = new PV(); new Thread(() -> { for (int i = 0; i < 20; i ++) { try { pv.produce(); }原创 2021-08-12 14:26:04 · 121 阅读 · 0 评论 -
死锁code
死锁code要会写 package Thread.deadlock; public class DeadLock { public static void main(String[] args) { Object o1 = new Object(); Object o2 = new Object(); Thread t1 = new MyThread1(o1, o2); t1.setName("t1"); Thread原创 2021-06-02 10:50:00 · 78 阅读 · 0 评论 -
synchronized
synchronized synchronized修饰实例方法时占用this对象锁; synchronized修饰静态实例方法时占用类锁(类锁只有一个); 关于synchronized的经典面试题,问题:线程t2执行时是否需要等待线程t1的结束? 首先定义一个类MyThread继承Thread,四个面试题这部分都一样。 class MyThread extends Thread{ private DoThing doThing; public MyThread(DoThing doThing原创 2021-06-02 10:33:45 · 133 阅读 · 0 评论