多线程
dreamcasher
不忘初心,野蛮生长
展开
-
40个Java多线程问题总结
原文出处:五月的仓颉前言Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看...转载 2018-08-14 16:01:55 · 108 阅读 · 0 评论 -
Java 如何创建线程,有什么异同?
常用的创建线程的方式有如下两种:继承Thread,重写run方法 实现Runnable接口,实现run方法两种方式在启动线程时有些许差别,第一种方式初始化实例后直接调用start()方法即可启动线程,第二种方式需要依赖于Thread类来启动,了解Thread源码应该知道,new一个Thread时,可以传入一个Runnable实例,线程启动后便会执行Runnable实例的run方法。除此...原创 2018-08-30 17:46:36 · 142 阅读 · 0 评论 -
Java ThreadLocal详解
尽管ThreadLocal与并发问题相关,可是很多程序猿只将它作为一种用于“方便传參”的工具,笔者觉得这或许并非ThreadLocal设计的目的,它本身是为线程安全和某些特定场景的问题而设计的。ThreadLocal是什么呢。每一个ThreadLocal能够放一个线程级别的变量,可是它本身能够被多个线程共享使用,并且又能够达到线程安全的目的,且绝对线程安全。比如:public fina...转载 2018-08-29 18:25:23 · 167 阅读 · 0 评论 -
多线程 并行与并发的区别
并行、并发在计算机编程中是非常重要的两个概念,但是它们常常被混淆。下面我来用一句话来概括,然后用通俗易懂的语言解释并举例说明。并发:两个任务共享时间片段。在计算的场景中是指,只有一个CPU的情况下,有两个任务要执行,那么需要给任务随机分配时间片段,任务A执行一会儿,然后任务B执行一会儿,下一次执行任务A或B一会儿,直到两个任务完成。并发在同一时刻只能执行一个任务。举一个例子,有个漂亮的小姐姐开...原创 2018-09-26 15:12:21 · 1056 阅读 · 0 评论 -
进程与线程
进程:程序运行资源分配的最小单位,一个进程至少有一个线程(保证程序运行),也可以拥有多个线程,线程间共享进程的内存资源。线程:CPU调度的最小单位...原创 2019-03-14 08:52:33 · 108 阅读 · 0 评论 -
yield、sleep、wait、notify、notifyAll调用后对锁的影响
yield:让出时间片,不会释放锁sleep:线程进入睡眠状态,不会释放锁wait:必须拿到锁才能执行,执行后释放锁,进入锁的等待队列,方法返回后重新拿到锁notify:必须拿到锁才能执行,执行后不会立马释放锁,而是通知等待队列中的某一个线程,同步代码块执行完毕后才会释放锁notifyAll:同notify,有一点不同在于,notifyAll会发出n个信号(n=等待线程数),而no...原创 2019-03-18 09:12:55 · 593 阅读 · 0 评论 -
锁的优化
减小锁的范围指的是减小持有锁的时间,比较典型的例子是:单例模式-懒加载-双重验证,它与直接在方法上加synchronized关键字来说效率更高降低锁密度指的是减小加锁对象的范围,用两个典型的例子加以说明:1、Mysql数据库中有行锁以及表锁,表锁是对整个表加锁,行锁是对每一行的数据加锁,行锁的锁密度更低,并发程度更高;2、jdk1.7以前的ConcurrentHashMap底层是一个S...原创 2019-04-16 11:06:42 · 152 阅读 · 0 评论 -
一文彻底搞懂面试中常问的各种“锁”
转自深夜里的程序猿https://blog.csdn.net/loveqishan/article/details/88944852前言锁,顾名思义就是锁住一些资源,当只有我们拿到钥匙的时候,才能操作锁住的资源。在我们的Java,数据库,还有一些分布式的环境中,总是充斥着各种各样的锁让人头疼,例如“公平锁”、“自旋锁”、“读写锁”、“分布式锁”等等。其实真实的情况是,锁并没有那么多...转载 2019-05-05 16:45:58 · 316 阅读 · 0 评论 -
java编程如何保证多线程运行安全?
java编程是面向对象的,而对象的抽象是类,那么如何做到类是线程安全的,即可保证程序的线程安全。ps:什么是线程安全问题?多个线程同时操作共享变量,并且这些操作不是原子操作如何做到类的线程安全呢?让类无状态类中没有成员变量(既没有静态变量,又没有实例变量)让变量线程私有化栈是线程私有的,所以方法中定义的局部变量便是线程私有的ThreadLocal让变量在每个线程中都保存一...原创 2019-05-09 09:57:09 · 4224 阅读 · 0 评论