并发
文章平均质量分 86
两点一刻
如有疑问,请发邮件:1176306419@qq.com
请关注:github:https://github.com/wangrui0/
我是一个java和大数据工程师!
展开
-
多线程 01 创建线程的两种传统方式:
package com.renrenche.thread;public class TraditionalThread {private static int count=0; public static void main(String[] args){ Thread thread=new Thread(){ @Override ...原创 2018-12-12 14:23:23 · 96 阅读 · 0 评论 -
多线程 14 java5的CountDownLatch同步工具
/** * (1) * 所有的运动员都等待裁判发布命令 * (2) * 裁判等待运动员的到达 */public class CountDownLatchTest { public static void main(String[] args){ ExecutorService threadPool = Executors.newCachedT...原创 2018-12-13 10:15:06 · 72 阅读 · 0 评论 -
多线程 15 java5的Exchanger同步工具
public class ExchangerTest { public static void main(String[] args){ ExecutorService threadPool = Executors.newCachedThreadPool(); final Exchanger<String> exchanger = ne...原创 2018-12-13 10:15:57 · 135 阅读 · 0 评论 -
多线程 16 java5阻塞队列的应用
(1)有两个线程,取数据,有一个线程写数据。/** * 有两个线程,取数据,有一个线程写数据。 */public class BlockingQueueTest { public static void main(String[] args){ ExecutorService threadPool = Executors.newCachedThre...原创 2018-12-13 10:17:04 · 160 阅读 · 1 评论 -
多线程 17 多线程题1
(1)原始:** * 现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志, * 请在程序中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印完这些日志对象。原始代码如下: */public class Test { public static void main(String[] arg...原创 2018-12-13 10:18:26 · 166 阅读 · 0 评论 -
多线程 18 多线程题2
(1)** * 现成程序中的Test类中的代码在不断地产生数据,然后交给TestDo.doSome()方法去处理, * 就好像生产者在不断地产生数据,消费者在不断消费数据。请将程序改造成有10个线程来消费生成者产生的数据, * 这些消费者都调用TestDo.doSome()方法去进行处理,故每个消费者都需要一秒才能处理完, * 程序应保证这些消费者线程依次有序地消费数据,只...原创 2018-12-13 11:17:15 · 187 阅读 · 0 评论 -
多线程 19 多线程题2
package syn; //不能改动此Test类 public class Test extends Thread{ private TestDo testDo; private String ...原创 2018-12-13 11:18:13 · 109 阅读 · 0 评论 -
并发-多线程之间实现通讯
多线程之间实现通讯多线程之间如何实现通讯什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。 画图演示多线程之间通讯需求 需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。代码实现基本实现共享资源源实体类 class Res { ...原创 2019-08-10 23:18:30 · 251 阅读 · 0 评论 -
并发-并发编程之多线程线程安全
什么是线程安全?为什么有线程安全问题?当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。案例:需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果。代码: public class ThreadTrain implements Runnable {...原创 2019-08-10 23:21:43 · 139 阅读 · 0 评论 -
并发-多线程快速入门
线程与进程区别每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如...原创 2019-08-10 23:23:36 · 140 阅读 · 0 评论 -
多线程 13 java5的CyclicBarrier同步工具
循环的路障,可以进行反复的使用。public class CyclicBarrierTest { public static void main(String[] args) { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); final CyclicB...原创 2018-12-13 10:13:49 · 83 阅读 · 0 评论 -
多线程 12 java5的Semaphere同步工具
package com.renrenche.thread;/** * 信号灯的测试 */public class SemaphoreTest { public static void main(String[] args){ ExecutorService threadPool = Executors.newCachedThreadPool();...原创 2018-12-13 10:10:13 · 107 阅读 · 0 评论 -
多线程 11 java5条件阻塞Condition的应用
使用condition实现同步public class ConditionCommunication { public static void main(String[] args) { final Bussiness bussiness = new Bussiness(); new Thread( new Ru...原创 2018-12-13 10:05:17 · 135 阅读 · 0 评论 -
多线程 02 传统定时器技术回顾
(1)1秒以后炸new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("bombing!!!"); } }, 1000); w...原创 2018-12-12 14:24:48 · 115 阅读 · 0 评论 -
多线程 03 传统线程互斥技术
public class TraditionalThreadSynchronized { public static void main(String[] args){ new TraditionalThreadSynchronized().init(); } public void init(){ f...原创 2018-12-12 14:27:01 · 112 阅读 · 0 评论 -
多线程 04 传统线程同步通信技术
面试题:子线程循环10次,接着主线程循环循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环10次,请写出程序;思路:先保证我干的时候你不到扰我,你干的时候我不打扰你,再看你一下我一下。public class TraditionalCommunication { public static void main(String[] args){ ...原创 2018-12-12 14:28:08 · 153 阅读 · 2 评论 -
多线程 05 线程范围内共享变量的概念与作用
ThreadLocal类及应用技巧(1)非线程内的数据共享:public class ThreadScopeShareData { private static int shareData; public static void main(String[] args){ for(int i=0;i<2;i++){ ...原创 2018-12-12 14:30:45 · 244 阅读 · 0 评论 -
多线程 06 多个线程之间共享数据的方式探讨
题目:设计4个线程,其中两个线程 每次对j增加1,另外两个线程每次对j减少1,写出程序;法一:共享数据和操作方法封装到一个内部类中public class MultiThreadShareData { public static void main(String[] args){ final ShareData shareData = new ShareData(...原创 2018-12-12 14:32:20 · 136 阅读 · 0 评论 -
多线程 07 java5原子性操作类和并发库的应用
java5线程并发库的应用//ExecutorService threadPool = Executors.newFixedThreadPool(3);// ExecutorService threadPool = Executors.newCachedThreadPool(); ExecutorService threadPool = Executor...原创 2018-12-12 14:38:38 · 87 阅读 · 0 评论 -
多线程 08 Callable与Future的应用(获得另外一个线程执行完的结果,如果拿不到一直去等,这和调用一个方法有什么区别呢)
public class CallableAndFuture { public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executorService = Executors.newSingleThreadExe...原创 2018-12-12 14:39:36 · 360 阅读 · 0 评论 -
多线程 09 java5的线程锁技术
public class LockTest { public static void main(String[] args){ new LockTest().init(); } public void init(){ final Oupter oupter = new Oupter(); new Thread(...原创 2018-12-12 14:44:35 · 81 阅读 · 0 评论 -
多线程 10 java5的线程锁技术
public class ReadWriteLockTest { public static void main(String[] args){ final Queue3 queue3 = new Queue3(); for(int i=0;i<3;i++){ new Thread(new Runnable() { ...原创 2018-12-12 14:46:32 · 162 阅读 · 2 评论 -
并发-线程池原理分析
并发包(计数器)CountDownLatchCountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务...原创 2019-08-11 22:16:54 · 249 阅读 · 0 评论