![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
WX码小菜
这个作者很懒,什么都没留下…
展开
-
线程同步生产者和消费者c和java不同实现
线程同步生产者和消费者c和java不同实现java 和 c 分别实现下消费者 生产者模式,更好的理解如何通过互斥锁和条件变量来保证资源同步javapackage com.toc;import java.util.LinkedList;import java.util.concurrent.TimeUnit;public class MutexCond { private static Lin原创 2017-09-30 12:37:32 · 328 阅读 · 0 评论 -
多线程编程中的Master-Worker模式
Master-Worker模式是常用的并行模式之一,它的核心思想是,系统有两个进程协作工作:Master进程,负责接收和分配任务;Worker进程,负责处理子任务。当Worker进程将子任务处理完成后,结果返回给Master进程,由Master进程做归纳汇总,最后得到最终的结果。什么是Master-Worker模式Worker:用于实际处理一个任务;Master:任务的分配和最终结果的合成;原创 2017-11-20 18:44:53 · 577 阅读 · 0 评论 -
多消费者,多生产者模式Java实现
一种实现方式(自己控制线程池)package com.java.test;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingDeque;public class ProducerConsumerDemo { public static void main(String[]原创 2017-11-20 16:30:39 · 402 阅读 · 0 评论 -
关于多核与单核、并行与并发
并发:时间段内有很多的线程或进程在执行,但何时间点上都只有一个在执行,多个线程或进程争抢时间片轮流执行。并行:时间段和时间点上都有多个线程或进程在执行。单核cpu的话只能是并发,多核cpu才能做到并行执行。可能有这样的疑问:那多进程的并发有什么意义,不但没有提高cpu的利用效率,由于调度等开销,还降低了cpu的使用。这样的想法是片面的:1.进程并不是时时刻刻都占用cpu的,比如打印的时候,这是c原创 2017-10-14 15:44:10 · 1713 阅读 · 0 评论 -
java ForkJoin框架实现统计词频性能比较
用ForkJoin框架实现的统计词频和一般单线程统计的性能比较源码如下:Folder.javapackage ForkJoin;import java.io.File;import java.io.IOException;import java.util.LinkedList;import java.util.List;/** * Folder 是磁盘文件夹模型 * @author原创 2017-10-13 13:44:24 · 457 阅读 · 0 评论 -
Fork and Join: Java也可以轻松地编写并发程序
如今,多核处理器在服务器,台式机及笔记本电脑上已经很普遍了,同时也被应用在更小的设备上,比如智能手机和平板电脑。这就开启了并发编程新的潜力,因为多个线程可以在多个内核上并发执行。在应用中要实现最大性能的一个重要技术手段是将密集的任务分隔成多个可以并行执行的块,以便可以最大化利用计算能力。处理并发(并行)程序,一向都是比较困难的,因为你必须处理线程同步和共享数据的问题。对于java平台在语言级别上对并翻译 2017-10-11 12:30:31 · 236 阅读 · 0 评论 -
用Executors框架封装一个多任务处理器
用Executors框架封装一个多线程处理器的一个不错的例子。 本例子,通过读取一个文件,然后通过将打印任务放入任务队列,最后通过事先准备好的线程池将任务队列处理。// Consumer.javapublic interface Consumer { public boolean consume(Item j); public void finishConsumption原创 2017-10-10 17:40:58 · 449 阅读 · 0 评论 -
Lock锁机制和synchronize分别实现生产者消费者例程
存在问题 像前面实现消费者生产者例程那样,地址,直接操作线程这种方式是可以的,但对于并发编程,这样的代码很快变得容易出错,特别是好几个线程需要协作来完成一个更大的任务的时候。这种情况下,它们的控制流需要被协调。例如,一个线程的执行完成可能依赖于其他将要执行完成的线程。通常熟悉的例子就是生产者/消费者的例子,因为如果消费者队列是空的,那么生产者应该等待消费者,并且如果生产者队列是空的,那么消费者原创 2017-10-10 16:43:27 · 509 阅读 · 0 评论 -
c用信号量(Semaphore)实现消费者生产者同步
// 前面一篇博客的生产者-消费者的例子是基于链表的,其空间可以动态分配,现在基于固定大小的环形队列重写这个程序:#include <stdlib.h>#include <pthread.h>#include <stdio.h>#include <semaphore.h>#define NUM 5int queue[NUM];/** * semaphore变量的类型为sem_t,sem原创 2017-09-30 16:28:10 · 1458 阅读 · 0 评论 -
多线程死锁问题分析和解决[java]
问题重现public class Deadlock { static class Friend { private final String name; public Friend(String name) { this.name = name; } public String getName() {原创 2017-09-30 14:57:55 · 289 阅读 · 0 评论 -
多线程编程中Future模式
Future模式核心思想Future模式的核心在于:去除了主函数的等待时间,并使得原本需要等待的时间段可以用于处理其他业务逻辑(根据《Java程序性能优化》)。Future模式有点类似于商品订单。在网上购物时,提交订单后,在收货的这段时间里无需一直在家里等候,可以先干别的事情。类推到程序设计中时,当提交请求时,期望得到答复时,如果这个答复可能很慢。传统的时一直等待到这个答复收到时再去做别的事情,但如原创 2017-11-20 18:46:15 · 299 阅读 · 0 评论