随笔分类 -  java多线程与并发

上一页 1 2 3 下一页

java并发:AtomicInteger 以及CAS无锁算法【转载】
摘要:1 AtomicInteger解析 众所周知,在多线程并发的情况下,对于成员变量,可能是线程不安全的; 一个很简单的例子,假设我存在两个线程,让一个整数自增1000次,那么最终的值应该是1000;但是多线程情况下并不能保证原子性;最终的结果极有可能不是1000;看如下的代码: package aut 阅读全文

posted @ 2018-08-09 15:35 乐之者v 阅读(638) 评论(0) 推荐(0) 编辑

大型网站应用之海量数据和高并发解决方案总结一二 【转载】
摘要:原文地址: https://mp.weixin.qq.com/s?__biz=MzI1NDQ3MjQxNA==&mid=2247483917&idx=1&sn=db1b0a2093d3c0d1bb6e32263abfe137&chksm=e9c5fbbcdeb272aae9635c628f85bcc 阅读全文

posted @ 2018-08-08 17:06 乐之者v 阅读(132) 评论(0) 推荐(0) 编辑

java并发:volatile关键字
摘要:java并发需要保证原子性,可见性,有序性。 http://www.cnblogs.com/expiator/p/9226775.html 一、volatile关键字作用如下: 1、volatile关键字,可以保证可见性。即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 2、vola 阅读全文

posted @ 2018-08-07 21:02 乐之者v 阅读(696) 评论(0) 推荐(0) 编辑

ReenTrantLock可重入锁(和synchronized的区别)总结
摘要:ReenTrantLock可重入锁(和synchronized的区别)总结 可重入性: 从名字上理解,ReenTrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程没进入一次,锁的计数器都自增1,所以要等到锁的 阅读全文

posted @ 2018-07-31 10:10 乐之者v 阅读(238) 评论(0) 推荐(0) 编辑

什么是死锁?如何解决死锁?【转载】
摘要:原文地址:https://blog.csdn.net/dt_zhangshuo/article/details/53334030 资源的分类 系统中有许多不同类型的资源,需要采用互斥访问方法并且不可被抢占的资源,也就是临界资源。 使用次数分类 可重用性资源 每一个可重用资源中的单元只能分配给一个进程 阅读全文

posted @ 2018-07-30 16:07 乐之者v 阅读(213) 评论(0) 推荐(0) 编辑

死锁的简单理解及示例
摘要:死锁,就是两个(或多个)线程对彼此加锁的资源进行加锁,导致彼此等待而永远阻塞。 比如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生了。线程1永远得不到B,线程2也永远得不到A,并且它们永远也不会知道发生了这样的事情。为了得到彼此的对象(A和B 阅读全文

posted @ 2018-07-30 16:05 乐之者v 阅读(820) 评论(0) 推荐(0) 编辑

java并发:Condition的应用
摘要:Condition类可以使线程等待,也可以唤醒线程。Condition类的await方法和Object类的wait方法等效Condition类的signal方法和Object类的notify方法等效Condition类的signalAll方法和Object类的notifyAll方法等效 注意:awi 阅读全文

posted @ 2018-07-27 11:51 乐之者v 阅读(187) 评论(0) 推荐(0) 编辑

java并发:读写锁ReadWriteLock
摘要:在没有写操作的时候,两个线程同时读一个资源没有任何问题,允许多个线程同时读取共享资源。 但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写。 简单来说,多个线程同时操作同一资源时,“读读共存,写写不共存,读写不共存”。 读写锁的锁定规则如下:获得读锁后,其它线程可获得读锁而 阅读全文

posted @ 2018-07-26 21:33 乐之者v 阅读(182) 评论(0) 推荐(0) 编辑

java并发中的锁
摘要:java中的锁,最基本的是Lock接口。 Lock接口中的方法,主要是: lock(): 获取锁,lock()方法会对Lock实例对象进行加锁,因此所有对该对象调用lock()方法的线程都会被阻塞,直到该Lock对象的unlock()方法被调用。 unlock(): 释放锁, Lock在发生异常时, 阅读全文

posted @ 2018-07-25 17:31 乐之者v 阅读(220) 评论(0) 推荐(0) 编辑

java线程池相关接口Executor和ExecutorService
摘要:在线程池的api中,Executor接口是最上层的接口,内部只有一个方法。如下: ExecutorService接口继承自Executor接口,结构如下: 而线程池的类ThreadPoolExecutor,具体关系如下: execute():用于执行线程 shutdown() : 关闭线程 Exec 阅读全文

posted @ 2018-07-18 16:27 乐之者v 阅读(267) 评论(0) 推荐(0) 编辑

阻塞队列实现生产者消费者模式
摘要:阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。 这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就 阅读全文

posted @ 2018-07-16 15:36 乐之者v 阅读(5493) 评论(0) 推荐(2) 编辑

ConcurrentHashMap的简单理解
摘要:一、效率低下的HashTable容器HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程访问HashTable的同步方法时,可能会进入阻塞或轮询状态。如线程1使用put进 阅读全文

posted @ 2018-07-13 15:28 乐之者v 阅读(541) 评论(0) 推荐(0) 编辑

线程的状态与基本操作
摘要:参考博客:https://blog.csdn.net/sinat_33087001/article/details/73607625 阅读全文

posted @ 2018-07-10 23:17 乐之者v 阅读(144) 评论(0) 推荐(0) 编辑

java多线程通信方式之一:wait/notify
摘要:java多线程之间的通信方式有多种: 1.wait(),notify(),notifyAll()方法;2.join()方法;3.通过volatile共享内存的方式进行线程通信的;4.interrupt()方法中断线程; 5.管道通信。 本文主要学习JAVA多线程中的 wait()方法 与 notif 阅读全文

posted @ 2018-07-10 23:03 乐之者v 阅读(324) 评论(0) 推荐(0) 编辑

synchronized的简单理解
摘要:synchronized能够保证在同一时刻只有一个线程执行该段代码。 使用synchronized能够防止多个线程同时并发访问程序的某些资源。 synchronized既可以修饰变量,也可以修饰方法,还可以用于代码块。 使用synchronized的原则:锁的范围尽可能小,锁的时间尽可能短。即能锁对 阅读全文

posted @ 2018-07-10 21:57 乐之者v 阅读(297) 评论(0) 推荐(0) 编辑

interrupt()方法的简单理解
摘要:interrupt() 方法只是改变中断状态而已,它不会中断一个正在运行的线程。这一方法实际完成的是,给受阻塞的线程发出一个中断信号,这样受阻线程就得以退出阻塞的状态。更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,此时调用该线程的i 阅读全文

posted @ 2018-07-04 22:36 乐之者v 阅读(8186) 评论(0) 推荐(2) 编辑

Thread.yield()的简单理解
摘要:Thread.yield( )方法: 使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择。 也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一定会执行其他线程而该线程在下一次中不会执行到了。 示例如下: 执行yield()方法后,可能是 t 阅读全文

posted @ 2018-06-28 22:32 乐之者v 阅读(4663) 评论(0) 推荐(0) 编辑

java并发特性:原子性、可见性、有序性
摘要:要想并发程序正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。 1、原子性(Atomicity) 原子性是指在一个操作中就是cpu不可以在中途暂停然后再调度,既不被中断操作,要不执行完成,要不就不执行。 如果一个操作时原子性的,那么多线程并发的情况下 阅读全文

posted @ 2018-06-25 22:52 乐之者v 阅读(425) 评论(0) 推荐(0) 编辑

线程池的简单理解
摘要:零、为什么要用线程池? 大量的线程会抢占cpu的资源,cpu不停的在各个线程上下文切换,上下文切换非常消耗时间。 为了避免频繁的创建和销毁线程,让创建的线程进行复用,就有了线程池的概念。 线程池里会维护一部分活跃线程,如果有需要,就去线程池里取线程使用,用完即归还到线程池里,免去了创建和销毁线程的开 阅读全文

posted @ 2018-05-17 22:43 乐之者v 阅读(342) 评论(0) 推荐(0) 编辑

java常用的几种线程池比较
摘要:1. 为什么使用线程池 诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达 阅读全文

posted @ 2018-04-28 15:20 乐之者v 阅读(216) 评论(0) 推荐(0) 编辑

上一页 1 2 3 下一页
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示