- 博客(14)
- 资源 (11)
- 收藏
- 关注
转载 位运算的妙用
先说一下位运算的简单用法1. 按位与 &用途:清零,取一个数中的某些指定位,保留一个数中的某些指定位2. 按位或 |用途:将一个数的某些位指定为13. 按位异或 ^用途:交换两个数a=a^b; b=a^b; a=a^b让我们看看这三条语句执行后的结果:第一条a=a^b,所以第二条b=a^b=(a^b)^b=a^(b^b)=a^
2015-08-31 15:23:20 480
原创 利用观察者模式来获取线程中的数据或者回调函数
首先//抽象主题角色,watched:被观察public interface Watched{ public void addWatcher(Watcher watcher); public void removeWatcher(Watcher watcher); public void notifyWatchers(Watcher watcher,String s
2015-08-18 22:30:32 2021
转载 JAVA wait(), notify(),sleep详解
在CSDN开了博客后,一直也没在上面发布过文章,直到前一段时间与一位前辈的对话,才发现技术博客的重要,立志要把CSDN的博客建好。但一直没有找到好的开篇的主题,今天再看JAVA线程互斥、同步的时候又有了新的体会,就以他作为开篇吧。 在JAVA中,是没有类似于PV操作、进程互斥等相关的方法的。JAVA的进程同步是通过synchronized()来实现的,需要说明的是,JAVA的sync
2015-08-14 11:53:37 494
转载 java线程:大总结
Java线程:大总结 Java线程是Java语言中一个非常重要的部分,Java5之前,多线程的语言支持还是比较弱的,内容也较少,写一个复杂的多线程程序是相当有挑战性的。 在Java5以后,Java对多线程做了很多扩展,扩展部分称之为并发包。这部分内容大大增强了Java多线程编程的能力,通过使用Java5线程新特征的API,可以很容易的做出复杂的多线程程序。与其他语言
2015-08-13 11:43:55 500
转载 Java线程:新特征-有返回值的线程
Java线程:新特征-有返回值的线程 在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。 现在Java终于有可返回值的任务(也可以叫做线程)了。 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。 执行Callable任务
2015-08-13 11:40:59 453
转载 java线程的同步互斥和通讯
一、同步和锁定1、锁的原理Java中每个对象都有一个内置锁。当程序运行到非静态的synchronized同步方法上时,自动获得与正在执行代码类的当前实例(this实例)有关的锁。获得一个对象的锁也称为获取锁、锁定对象、在对象上锁定或在对象上同步。当程序运行到synchronized同步方法或代码块时才该对象锁才起作用。
2015-08-13 11:37:05 436
转载 利用object.wait()和实现生产者和消费者模式
其实生产者和消费者模式概念很简单,就是生产者将生产出来的产品放在仓库里,然后消费者依次从仓库里取产品消费。归到程序里,这里的仓库就可以用数组,队列或栈来表示。掌握以下两点后,该模式的实现将不成问题。1. 首先要明白生产者和消费者之间的并发对象就是存放产品的队列,这样才能把并发方法提炼出来。2. 其次要掌握object.wait()和object.notifyAll()这两个
2015-08-13 11:36:07 447
转载 java并发编程--AbstractQueuedSynchronizer加锁和解锁分析(二)
在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concurrent.AbstractQueuedSynchronizer类,实现思路都大同小异,因此我们以ReentrantLock作为讲解切入点。1. Re
2015-08-13 11:32:58 871
转载 java并发编程--AbstractQueuedSynchronizer公平锁和非公平锁分析(三)
juc包中,aqs实现的公平锁和非公平锁的最主要的区别是:非公平锁中,那些尝试获取锁且尚未进入等待队列的线程会和等待队列head结点的线程发生竞争。公平锁中,在获取锁时,增加了isFirst(current)判断,当且仅当,等待队列为空或当前线程是等待队列的头结点时,才可尝试获取锁。 1.1 NonfairSync.lock() Java代码
2015-08-13 11:31:55 970
转载 java并发编程--AbstractQueuedSynchronizer条件锁分析(四)
前一篇J.U.C的锁的获取与释放的过程,这个过程主要通过在A.Q.S中维持一个等待队列来实现,其中我们也提到了,在A.Q.S中除了一个等待队列之外,还有多个Condition队列(Condition队列的多少取决于ConditionObject对象个数),在了解Condition队列之前,先来看一下Condition是怎么回事:The synchronizer framework pr
2015-08-13 11:31:09 624
转载 java并发编程--AbstractQueuedSynchronizer的lock()和lockInterruptibly()方法分析(五)
lock 与 lockInterruptibly比较区别在于:lock 优先考虑获取锁,待获取锁成功后,才响应中断。lockInterruptibly 优先考虑响应中断,而不是响应锁的普通获取或重入获取。 详细区别:ReentrantLock.lockInterruptibly允许在等待时由其它线程调用等待线程的Thread.interrupt方法来中断等待
2015-08-13 11:30:19 499
转载 java并发编程--AbstractQueuedSynchronizer的tryLock()方法分析(六)
tryLock()仅尝试一次获取锁,不管成功与否,都将返回结果。 Java代码 public boolean tryLock()仅在调用时锁未被另一个线程保持的情况下,才获取该锁。 如果该锁没有被另一个线程保持,并且立即返回 true 值,则将锁的保持计数设置为 1。即使已将此锁设置为使用公平排序策略,但是调用 tryLock() 仍将 立即获
2015-08-13 11:28:36 419
转载 java并发编程--ThreadLocal的用法和分析
ThreadLocal这个类,理解起来比较简单,但是使用时,还是需要一些技巧的,简单介绍如下: 例子1:threadLocal变量一般用法 Java代码 package concurrent.thread; /** * 技巧: * 1.在当前线程里执行threadLocal.set(value) 相当于 cu
2015-08-13 11:27:45 396
转载 线程池--jetty中QueuedThreadPool分析(一)
jetty版本:jetty-6.1.261.由于jetty中的许多组件都实现了LifeCycle接口,先了解下该接口的定义: Java代码 package org.mortbay.component; import java.util.EventListener; public interface LifeCycle
2015-08-13 11:26:29 1422
apache2.4.17版本文件服务器所使用的架包
2015-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人