![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程学习
ZeWe
偷影子的人
展开
-
Thread、Runnable、synchronized关键字
Thread与RunRunnable实现线程的区别/** * <p>Thread与RunRunnable</P> * * @author * *//* * 实现Runnable接口 */class ImpRunnable implements Runnable{ private int count = 1; @Override publi...原创 2018-04-22 21:59:56 · 400 阅读 · 0 评论 -
多线程 计算 1+2+3+4+.....+n 的值 — CyclicBarrier
CyclicBarrier一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)后,在全部同时执行。所有的线程调用await()方法之后,到达某个公共屏障点。 然后同时执行 await() 后的操作。public CyclicBarrier(int parties, Runnable barrierAction) {} pub...原创 2019-06-11 10:49:57 · 2270 阅读 · 2 评论 -
多线程 计算 1+2+3+4+.....+n 的值 — CountDownLatch
CountDownLatch :一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数初始化CountDownLatch。调用countDown()使当前计数减1,在到达0之前,await方法会一直受阻塞。之后,会释放所有等待的线程,await的所有后续调用都将立即返回。如一个任务A,它要等待其他N个任务执行完毕之后才能执行,则可...原创 2019-06-10 16:40:22 · 3449 阅读 · 0 评论 -
Lock + Condition(生产者,消费者)
记个代码例子:1、仓库package com.zewe.reentrantLock;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * * @auth...原创 2019-06-10 14:03:58 · 318 阅读 · 0 评论 -
使用Socket模拟简易Web服务器
Web服务器大家应该都很熟悉了,web服务器的原理可以看这里。讲的挺详细的。本篇主要是模拟一下简单的交互,通过socket通道,浏览器发送请求,服务器返回资源。简单图例如上,然后来看代码吧 1、首先启动服务监听端口,使用线程池来完成交互package server;import java.net.ServerSocket;import java.net.Socket...原创 2018-11-18 12:12:36 · 1544 阅读 · 0 评论 -
Lock + Condition 2个例子
1、自定义有边界的队列import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class MyQueue<E> { private Object[] ...原创 2018-10-14 21:41:34 · 530 阅读 · 0 评论 -
创建线程的几种方式
1、匿名内部类创建线程 2、定时器实现Runable接口 3、线程池3.1、指定线程数量3.2、随机线程数量 4、spring 异步注解方式原创 2018-10-14 10:44:32 · 230 阅读 · 0 评论 -
线程定时任务
最近有遇到定时任务的场景,本来想直接整个quartz,但是小场景不用大动作,就网上搜搜博客,摘了几个好的试了试,都挺好使。简单记录下学习学习. 1、Thread + sleep 最简单实现class ThreadTask extends Thread{ public void run() { while(true) { try { // to ...原创 2018-09-14 16:20:06 · 467 阅读 · 0 评论 -
wait、notify、notifyAll
标注的解释/** * Wakes up a single thread that is waiting on this object's * monitor. If any threads are waiting on this object, one of them * is chosen to be awakened. The choice is arbitrar...原创 2018-05-03 11:17:08 · 210 阅读 · 0 评论 -
Semaphore 信号量简单示例
Semaphore是一个计数信号量,它的本质是一个"共享锁"。信号量维护了一个信号量许可集,Semaphore可以控同时访问的线程个数,线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通过release()来释放它所持有的信号量许可。10个线程 抢占5个信号量许可package ...原创 2019-06-11 13:49:05 · 235 阅读 · 0 评论