自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 java并发包学习笔记4-守护线程

java程序入口就是由JVM启动main线程,main线程又可以启动其他线程。当所有守护线程以外的线程都运行结束时,JVM退出(守护线程跟着结束),进程结束。/** * 守护线程即使未运行完成结束,但是用户线程结束,守护线程也会跟着结束 * @author Administrator * */public class Main { public static void main(String[] args) { Thread daemonThread = new Thread(new T

2020-05-24 14:55:29 208

原创 java并发包学习笔记3-ThreadLocal

ThreadLocal可以理解为一个作用域为线程内的Map,它可以在一个线程中传递同一个对象。相当于给每个线程都开辟了一个独立的存储空间,各个线程的ThreadLocal关联的实例互不干扰。可以把ThreadLocal看成一个全局Map<Thread, Object>:每个线程获取ThreadLocal变量时,总是使用Thread自身作为key:Object threadLocalValue = threadLocalMap.get(Thread.currentThread());需要注

2020-05-24 14:40:31 237

原创 java并发包学习笔记2-Future与CompletableFuture

实现一个Runnable接口,传入线程池可以通过多线程运行。public class MyTask implements Runnable{ private int id; public MyTask() { } public MyTask(int id) { this.id = id; } @Override public void run() { try { Thread.sleep(100); System.out.println("id = " + thi

2020-05-22 21:07:30 322

原创 java并发包学习笔记1-各种各样的锁

java.util.concurrent 是java5开始引入的高级的处理高并发多线程的包。ReentrantLockReentrantLock是可重入锁,一个线程可以多次获取同一个锁。synchronized在获取锁的时候必须一直等待,ReentrantLock更加灵活。public Counter { private int count; public void add(int num) { synchronized(this) { count+=num;

2020-05-16 22:20:42 200

原创 java多线程学习笔记3-wait和notify

synchronized解决的是资源竞争问题,多线程协调的问题需要wait()和notify()解决。以多线程任务队列的场景举例。class TaskQueue { Queue<String> queue = new LinkedList<>(); public synchronized void addTask(String s) { this.queue.add(s); } public synchronized Strin

2020-05-16 11:36:25 179

原创 java多线程学习笔记2-可重入锁与死锁

(本文为廖雪峰java学习笔记)能被同一个线程反复获取的锁叫做可重入锁。public class Counter { private int count = 0; public synchronized void add(int n) { if (n < 0) { dec(-n);//对同一个线程,能在获取到锁以后继续获取同一个锁。 } else { count += n; }

2020-05-15 02:04:07 259

原创 java多线程学习笔记1-同步

多线程同步使用sychronized,要注意加锁的对象要正确。package com.oy.example.multithread.sychronization.lockobject;/** * 对于不同的临界资源,需要加不同的锁 * @author Administrator * */public class Main { public static void main(String[] args) throws InterruptedException { AddAThread

2020-05-15 01:47:33 163

原创 java泛型学习笔记2-编写泛型

(该文为廖雪峰java学习笔记)编写泛型类时,要特别注意,泛型类型不能用于静态方法。public class Pair<T> { private T first; private T last; public Pair(T first, T last) { this.first = first; this.last = last; } public T getFirst() { ... } public T ge

2020-05-11 21:16:17 322 1

原创 java泛型学习笔记1-认识泛型

(该文为廖雪峰java学习笔记)Java标准库提供的ArrayList可以看作是Object[]变长数组:public class ArrayList { private Object[] array; private int size; public void add(Object e) {...} public void remove(int index) {...} public Object get(int index) {...}}ArrayLis

2020-05-11 20:52:35 157

原创 幻读,间隙锁,next-lock key加锁原则

(该文为极客时间《Mysql实战45讲》的20、21讲学习笔记)环境准备sqlCREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `c` (`c`)) ENGINE=InnoDB;ins...

2020-03-21 16:42:33 975 1

空空如也

空空如也

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

TA关注的人

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