
并发编程
文章平均质量分 96
并发编程
猫巳
2006年《时代周刊》年度人物
2008年“感动中国年度人物”特别奖获得者
2019年度“地球卫士奖”联合获奖人
2020年感动中国特别致敬奖——抗疫英雄
2022年”奥林匹克奖杯“获奖者
展开
-
【Java面试题】如何开启一个线程,开启大量线程会有什么问题,如何优化?
这道题想考察什么?是否了解线程开启的方式?开启大量线程会引起什么问题?为什么?怎么优化?考察的知识点线程的开启方式开启大量线程的问题线程池考生应该如何回答1、首先,关于如何开启一个线程,大多数人可能都会说3种,Thread、Runnable、Callback嘛!但事实却不是这样的。看JDK里怎么说的。/** * ... * There are two ways to create a new thread of execution. One is to * declare a原创 2020-11-24 13:28:15 · 1807 阅读 · 2 评论 -
【并发编程】线程基础、线程之间的共享和协作
基础概念什么是进程和线程进程是程序运行资源分配的最小单位进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘IO等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。进程...原创 2019-04-18 22:40:42 · 554 阅读 · 0 评论 -
【并发编程】原子操作CAS(Compare And Swap)
什么是原子操作?如何实现原子操作?假定有两个操作A和B,如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行B,那么A和B对彼此来说是原子的。实现原子操作可以使用锁,锁机制,满足基本的需求是没有问题的了,但是有的时候我们的需求并非这么简单,我们需要更有效,更加灵活的机制,synchronized关...原创 2019-04-24 21:09:27 · 371 阅读 · 0 评论 -
【并发编程】Java8新增的并发
原子操作CASLongAdderJDK1.8时,java.util.concurrent.atomic包中提供了一个新的原子类:LongAdder。 根据Oracle官方文档的介绍,LongAdder在高并发的场景下会比它的前辈————AtomicLong 具有更好的性能,代价是消耗更多的内存空间。 AtomicLong是利...原创 2019-05-30 11:10:19 · 411 阅读 · 0 评论 -
【并发编程】常见并发面试题
在java中守护线程和用户线程的区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()...原创 2019-05-30 13:24:23 · 378 阅读 · 0 评论 -
【并发编程】并发安全
什么是线程安全性在《Java并发编程实战》中,定义如下: 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在调用代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。线程封闭实现好的并发是一件困难的事情,所以很多时候我们都想躲避并发。避免并发最简...原创 2019-05-14 20:16:18 · 233 阅读 · 0 评论 -
【并发编程】线程池
为什么要用线程池?Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。假设一个服务...原创 2019-05-13 20:02:08 · 317 阅读 · 0 评论 -
【并发编程】线程的并发工具类
Fork-Joinjava下多线程的开发可以我们自己启用多线程,线程池,还可以使用forkjoin,forkjoin可以让我们不去了解诸如Thread,Runnable等相关的知识,只要遵循forkjoin的开发模式,就可以写出很好的多线程并发程序分而治之同时forkjoin在处理某一类问题时非常的有用,哪一类问题?分而治之...原创 2019-04-22 20:15:21 · 253 阅读 · 0 评论 -
【并发编程】显式锁和AQS
显式锁有了synchronized为什么还要Lock? Java程序是靠synchronized关键字实现锁功能的,使用synchronized关键字将会隐式地获取锁,但是它将锁的获取和释放固化了,也就是先获取再释放。 Lock的标准用法/** *类说明:使用Lock的范例 */public class Lock...原创 2019-05-05 21:39:38 · 789 阅读 · 0 评论 -
【并发编程】并发容器
预备知识hash就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函...原创 2019-05-08 06:50:49 · 477 阅读 · 0 评论 -
什么是进程和线程
定义线程:CPU调度的最小单位,必须依赖进程而存在。进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源.多线程:是指从软件或者硬件上实现多个线程的并发技术。多线程的好处:(1)使用多线程可以把程序中占据时间长的任务放到后台去处理,如图片、视屏的下载(2)发挥多核处理器的优势,并发执行让系统运行的更快...原创 2019-01-01 14:35:24 · 193 阅读 · 0 评论 -
【并发编程】并行和并发以及高并发编程的意义、好处和注意事项
定义并行:同一时刻,可以同时处理事情的能力.并发:与单位时间相关,在单位时间内可以处理事情的能力举例说明并行:银行有10个窗口,同一时间,最多只能有10个人办理业务,可以说并行是10并发银行有10个窗口,一个人办理业务的时间需要半分钟,那么该银行一分钟的并发是20高并发编程的意义、好处和注意事项好处:...原创 2019-01-01 14:36:24 · 341 阅读 · 0 评论 -
【并发编程】以下哪个不属于java.util.concurrent.locks.Lock里面的方法
以下哪个不属于java.util.concurrent.locks.Lock里面的方法A. waitB. lockC. trylockD. newCondition正确答案 A:Lock答案解析:接口里面的方法有lock、lockInterruptibly、tryLock、tryLock(long time, Tim...原创 2019-11-02 10:36:45 · 300 阅读 · 0 评论 -
【并发编程】并发编程面试题
Synchronized 相关问题问题一:Synchronized 用过吗,其原理是什么?这是一道 Java 面试中几乎百分百会问到的问题,因为没有任何写过并发程序的开发者会没听说或者没接触过 Synchronized。Synchronized 是由 JVM 实现的一种实现互斥同步的一种方式,如果你查看被 Synchronized...原创 2019-08-01 13:32:06 · 488 阅读 · 0 评论 -
【并发编程】推特(Twitter)的Snowflake算法——用于生成唯一ID
前言关于如何在系统中生成唯一性ID的问题(如订单号、批次号等),一直困扰了许久。因为还要考虑并发的问题,所以时间戳+随机数的组合并不可取,Java中的UUID是一种可取的方法,但它的缺点是序列号太长了,而且没有可读性,对用户来说这么一堆乱码是极不友好的。推特的工程师snowflake也提出了一个在分布式系统中生成唯一序列的方法。S...原创 2019-09-05 09:10:19 · 592 阅读 · 0 评论