![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
年轻的橙子
这个作者很懒,什么都没留下…
展开
-
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 · 153 阅读 · 0 评论 -
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 · 173 阅读 · 0 评论 -
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 · 253 阅读 · 0 评论 -
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 · 139 阅读 · 0 评论 -
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 · 105 阅读 · 0 评论 -
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 · 194 阅读 · 0 评论 -
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 · 104 阅读 · 0 评论 -
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 · 236 阅读 · 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 · 105 阅读 · 0 评论