多线程
文章平均质量分 86
风流 少年
我走的很慢,但从不后退!Not designed!
展开
-
多线程(一):创建线程和线程的常用方法
一:为什么要学多线程应付面试 :多线程几乎是面试中必问的题,所以掌握一定的基础知识是必须的。了解并发编程:实际工作中很少写多线程的代码,这部分代码一般都被人封装起来了,在业务中使用多线程的机会也不是很多(看具体项目),但是作为一个高级程序员如果不会多线程是说不过去的。二:进程与线程进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统...原创 2018-09-01 19:14:23 · 245261 阅读 · 86 评论 -
多线程(八): Vector与ArrayList
一:ArrayList不安全示例使用ArrayList每次打印的集合数量可能会小于10000,而使用Vector每次都是10000public class ListTest { public static void main(String[] args) throws InterruptedException { ThreadGroup group = new Th...原创 2018-09-01 19:34:48 · 1013 阅读 · 0 评论 -
多线程(十二): 信号量Semaphore
Semaphore是一种基于计数的信号量。它可以设定一个阀值,基于此,多个线程竞争获取许可信号,做自己的申请后归还,超过阀值后,线程申请许可信号将会被阻塞。 Semaphore可以用来构建一些对象池,资源池之类的,比如数据库连接池,我们也可以创建计数为1的Semaphore,将其作为一种类似互斥锁的机制,这也叫二元信号量,表示两种互斥状态。public class Semaphore i...原创 2018-09-01 19:36:42 · 5790 阅读 · 0 评论 -
多线程(五): CAS无锁机制
https://blog.csdn.net/mmoren/article/details/79185862原创 2018-09-01 19:31:25 · 1721 阅读 · 0 评论 -
多线程(十一): 计数器CountDownLatch和CyclicBarrier
public static void main(String[] args) { System.out.println(new Date() + "\t" + Thread.currentThread().getName() + "\t\trunning..."); Thread thread = new Thread(()原创 2018-09-01 19:36:25 · 6065 阅读 · 0 评论 -
多线程(十): 并发中集合ConcurrentHashMap
public class HashTest { static Map<String, String> map = new HashMap<>(); public static void main(String[] args) {原创 2018-09-01 19:35:57 · 4435 阅读 · 1 评论 -
多线程(四):锁
卖火车票示例public class TrainTicketTest { int num = 2; public static void main(String[] args) { // 抢火车票功能 TrainTicketTest synchronizedTest = new TrainTicketTest(); for (...原创 2018-09-01 19:30:28 · 1484 阅读 · 1 评论 -
多线程(六):volatile
public class MyThread extends Thread { private static boolean flag = true; @Override public void run() { System.out.println(Thread.currentThread().getName()); while (flag)...原创 2018-09-01 19:32:14 · 816 阅读 · 0 评论 -
多线程(三):队列 BlockingQueue
一:简介阻塞队列的特性:我在放的时候别人不能放,我在取的时候别人不能取,满的时候就不能再添加,等待有人取走,才能放public interface BlockingQueue<E> extends Queue<E> { // 添加成功返回true,否则抛出异常 boole原创 2018-09-01 19:29:41 · 2189 阅读 · 0 评论 -
多线程(七):ThreadLocal
ThreadLocal本地线程:为每个线程提供一个局部变量,public class ThreadLocal<T> { ThreadLocal.ThreadLocalMap threadLocals = null; public ThreadLocal(); protected T initialValue(); public void se...原创 2018-09-01 19:34:59 · 728 阅读 · 0 评论 -
多线程(二):线程池
一:常用类实际工作中很少显式的去创建线程,因为如果显式创建线程当并发很大时会使得内存耗尽(每个线程都需要分配内存空间),实际开发中一般使用线程池来控制线程的最大个数以及合理重复的利用线程Exception in thread “main” java.lang.OutOfMemoryError: unable to create new native threadpublic stati...原创 2018-09-01 19:27:22 · 2301 阅读 · 2 评论 -
多线程(九): HashTable、HashMap和ConcurrentHashMap
public class HashTest { static Map<String, Integer> map = new HashMap<String, Integer>(); // static Map<String, Integer> map = new Has原创 2018-09-01 19:34:33 · 773 阅读 · 0 评论