线程 线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。Java 虚拟机允许应用程序并发地运行多个执行线程。 Thread类:该类的对象代表一个 ...
分类:
编程语言 时间:
2019-09-18 12:58:54
阅读次数:
228
实现锁: 1.同步代码块: 2.同步方法:在方法的头部加上synchronized 3.Lock:功能比synchronized更加的强大,但是加锁的时一定不要忘记解锁unlock(); 在使用lock锁时,想要实现睡眠唤醒功能,就要使用condition,对应的方法是await(),singal( ...
分类:
编程语言 时间:
2019-09-03 16:42:38
阅读次数:
126
携程爬取阳光问帖子:进行了简单的数据存储,数据量共145226条,爬取时间为:3.65小时,时间感觉要多于这个时间。 代码如下: 复习协程的知识: 多线程会抢抢夺公共资源,因此会造成公共资源的不安全,需要通过线程锁进行解决,那么多个携程为什么不存在这个情况呢? 因为多个协程也是在一个线程里面进行运行 ...
分类:
其他好文 时间:
2019-09-01 21:48:18
阅读次数:
111
1 标准访问,先打印短信还是邮件 2 停4秒在短信方法内,先打印短信还是邮件 3 普通的hello方法,是先打短信还是hello 4 现在有两部手机,先打印短信还是邮件 5 两个静态同步方法,1部手机,先打印短信还是邮件 6 两个静态同步方法,2部手机,先打印短信还是邮件 7 1个静态同步方法,1个 ...
分类:
编程语言 时间:
2019-08-27 12:26:43
阅读次数:
101
一、死锁与递归锁 死锁的现象归根在于函数功能中含有连续锁,并且,各个锁的加锁与解锁时存在一定的时间差。当多个此类函数出现加锁的次序不一致时,当不同进程/线程调用这些函数,可能因为首次抢得锁的进程/线程释放锁的次序不同,导致其他进程/线程抢得锁的样式也不一致,无法在一个功能函数中连续使用,出现死锁。 ...
分类:
编程语言 时间:
2019-08-23 22:38:22
阅读次数:
135
1.为什么要同步访问数据? 当两个或以上的线程需要共享对同一数据的存取,可能会发生共享数据的讹误。 2.实现同步的方式 2.1 ReentrantLock类 School类: 其中 lock是锁对象, condition 是条件对象, 用法: 当条件对象调用await()方法时候,当前线程会进入等待 ...
分类:
编程语言 时间:
2019-08-08 00:28:11
阅读次数:
114
定义运行方法package com.company; // 包名import java.util.concurrent.locks.ReentrantLock;import java.util.concurrent.locks.Lock;public class ticket implements ...
分类:
编程语言 时间:
2019-08-06 21:32:02
阅读次数:
110
一、java代码模拟并发 1.1、一次并发 单次并发测试 1、使用CountDownLatch 等待一个或多个线程一起执行 详细参看:007-多线程-锁-JUC锁-CountDownLatch-闭锁【允许一个或多个线程,等待其他一组线程完成操作,再继续执行】 示例代码 输出: 2019-08-02T ...
分类:
编程语言 时间:
2019-08-06 21:20:40
阅读次数:
260
自己以前也写过多线程,发现都是零零碎碎,这篇写写详细点,填一下GIL和Python多线程多进程的坑~ 总结下GIL的坑和python多线程多进程分别应用场景(IO密集、计算密集)以及具体实现的代码模块。 目录 0x01 进程 and 线程 and “GIL” 0x02 python多线程&&线程锁& ...
分类:
编程语言 时间:
2019-08-06 00:28:53
阅读次数:
111
众所周知, 在多线程中,因为共享全局变量,会导致资源修改结果不一致,所以需要加锁来解决这个问题,保证同一时间只有一个线程对资源进行操作 但是在分布式架构中,我们的服务可能会有n个实例,但线程锁只对同一个实例有效,就需要用到分布式锁 redis setnx 原理: 修改某个资源时, 在redis中设置 ...
分类:
编程语言 时间:
2019-07-27 09:27:50
阅读次数:
82