在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。 为什么要使用生产者和消费者模式 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那 ...
分类:
编程语言 时间:
2017-09-14 10:22:57
阅读次数:
222
前沿: ReentrantLock 是java重入锁一种实现,在java中我们通常使用ReentrantLock 和 synchronized来实现锁功能,本篇通过例子来理解下ReentrantLock使用以及什么是可重入锁。 理解可重入: 1. 锁机制是为了多线程并发访问共享资源情况下为保证线程的 ...
分类:
其他好文 时间:
2017-09-11 19:48:38
阅读次数:
161
前言 对于ThreadLocal、Volatile、synchronized、Atomic这四个关键字,我想一提及到大家肯定都想到的是解决在多线程并发环境下资源的共享问题,但是要细说每一个的特点、区别、应用场景、内部实现等,却可能模糊不清,说不出个所以然来,所以,本文就对这几个关键字做一些作用、特点 ...
分类:
其他好文 时间:
2017-09-10 17:37:00
阅读次数:
134
今天看着一个多线程并发用到的关键字:volatile,看了不少资料发现这个是一个共享的直接写入内存使用的关键字修饰变量,用来修饰类变量或者类静态变量,所以有了一个关于单利模式的想法,我们都知道的单例模式的一个写法是: 当然单例模式还有其他的写法,我要说的是将关键字volatile加在变量instan ...
分类:
其他好文 时间:
2017-09-07 19:33:45
阅读次数:
134
多线程下[HashMap]的问题:1、多线程put操作后,get操作导致死循环。2、多线程put非NULL元素后,get操作得到NULL值。3、多线程put操作,导致元素丢失。本次主要关注[HashMap]-死循环问题。为何出现死循环?大家都知道,HashMap采用链表解决Hash冲突,具体的Has... ...
分类:
编程语言 时间:
2017-09-05 01:32:17
阅读次数:
218
今天是毕业入职的第一个周末,一直对多线程并发方面的知识比较感兴趣,因为目前我手里的项目并没有涉及到并发方面的知识,所以怕以后遗忘,也便于以后复习和使用,所以总结了一下Lock里面的一些类的方法。具体的代码实现例子我在这里就不做说明解释了,这些方法都比较容易理解和使用,如果实在是忘记的话可以在随时查阅 ...
分类:
编程语言 时间:
2017-09-02 23:25:45
阅读次数:
230
大家一提到程序员,首先想到的是以下标签:苦逼,加班,熬夜通宵。但是,但凡工作了的同学都知道,其实大部分程序员做的事情都很简单,代码CRUD可以说毫无技术含量,就算什么不懂依葫芦画瓢很多功能也能勉强做出来,做个多线程并发就算高科技了,程序员这行的门槛其实还是比较低的。(这里说的是大部分,有些牛逼的,写 ...
分类:
其他好文 时间:
2017-08-31 18:03:26
阅读次数:
198
练习一 #_*_coding:utf-8_*_ #!/usr/bin/env python import multiprocessing import threading import socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) ...
分类:
编程语言 时间:
2017-08-30 16:36:10
阅读次数:
196
实现功能:Ubuntu上通过多线程实现服务器并发给客户端发送文件,携带包头,根据包头信息命名新文件。适用于短连接。 问题小结: 01. 调用嵌套在结构体中的结构体char 数组成员时,需要动态分配内存。 02. 使用select() 监听socket变化。select() 其中三个参数分别监听读,写 ...
分类:
编程语言 时间:
2017-08-23 19:11:57
阅读次数:
150
HashMap多线程并发问题分析 多线程put后可能导致get死循环 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你 ...
分类:
编程语言 时间:
2017-08-14 18:59:54
阅读次数:
267