java
文章平均质量分 80
进击的马小林
这个作者很懒,什么都没留下…
展开
-
java领域的即时通信(openfire+spark+smack)
前言 Java领域的即时通信的解决方案可以考虑openfire+spark+smack。当然也有其他的选择。Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使用3.8.1版本,这个版本是当前最新的版本,而且网上可以找到下载的源代码。即时通信客户端可使用spark2.6.3,这个版本是目前最新的release版本,经过测试发现上一版本在视转载 2015-11-15 11:27:36 · 6355 阅读 · 0 评论 -
java知识巩固
注:本博客是需要有的java知识,是博主用来对所学的一个知识巩固。一、关于对象与类: 1、重载:如果多个方法有相同的名字,不同的参数,便产生了重载。 2、无参数的构造函数:如果在编写一个类时,没有编写构造器,那么系统会提供 一个无参数构造器。这个构造器将所有的实例域设置为默认值。如果类中提供了至少一个构造器,但是没有提供无参数的构造器,则系统不会提供无参数构原创 2016-06-30 14:24:08 · 841 阅读 · 1 评论 -
JAVA多线程-Lock的使用(四)-读写锁ReentrantReadWriteLock
读写锁ReentrantReadWriteLock 我们之前讲解的ReentrantLock具有完全互斥排他的效果,即同一时间只有一个线程在执行lock()方法后面的任务。这样做虽然保证了实例变量的线程安全性,但效率是非常低下的。 而ReentrantReadWriteLock类,使用它可以加快运行效率,在某些不需要操作实例变量的方法中,完全可以使用读写锁来提升该方法的代码原创 2016-02-21 15:35:04 · 404 阅读 · 0 评论 -
JAVA多线程-Lock的使用(三)-Lock与Condiition相关的方法
Lock与Condiition相关的方法 1、int lock.getHoldCount():查询当前线程保持锁定的个数,也就是调用lock()方法的次数 2、int lock.getQueueLength():返回正在等待获取此锁定的线程估计数。 比如:有5个线程,有一个首先执行await()方法,那么调用该方法后返回值为4,说明有4个线程同时在等待lo原创 2016-02-21 14:53:05 · 875 阅读 · 0 评论 -
JAVA多线程-Lock的使用(二)-公平锁与非公平锁
公平锁与非公平锁 锁Lock分为L:公平锁和非公平锁。 公平锁:表示线程获取锁的顺序是按照线程加锁的顺序来分配的,即先来先得的FIFO先进先出顺序。 非公平锁:一种获取锁的抢占机制,是随机获得锁的,和公平锁不一样的就是先来的不一定先得到锁,这个方式可能造成某些线程一直拿不到锁,结果就不公平了。 1、公平锁的案例:package org原创 2016-02-21 13:33:45 · 1029 阅读 · 0 评论 -
JAVA多线程-Lock的使用(一)-ReentrantLock与Condition
JAVA多线程-Lock的使用 本节主要介绍使用Java5中的Lock对象也能实现同步的效果,而且在使用上更加方便。一、使用ReentrantLock类 在java多线程中,可以使用synchronized关键字来实现线程之间同步互斥,但在JDK1.5中新增加了ReentrantLock类也能达到同样的效果,并且在扩展功能上也更加强大,比如具有嗅探锁定 ,多路分支通知原创 2016-02-21 12:59:11 · 386 阅读 · 0 评论 -
JAVA多线程-线程间通信(五)-类ThreadLocal的使用
类ThreadLocal的使用 变量值的共享可以使用public static的形式,所有的线程都是用同一个public static变量。如果想实现每一个线程都有自己的共享变量该如何解决呢? 类ThreadLocal主要解决的是:每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放数据的盒子,盒子中可以存储每一个线程的私有数据。 1、方法get()与n原创 2016-02-21 10:53:30 · 408 阅读 · 0 评论 -
JAVA多线程-线程间通信(四)-join的使用
方法join的使用 在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结。这时,如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join()这个方法了。方法join()的作用是等待线程对象销毁。demo案例:package org.jksoft.thread.join原创 2016-02-21 10:04:23 · 407 阅读 · 0 评论 -
JAVA多线程-线程间通信(三)-通过管道进行线程间通信
通过管道进行线程间通信 管道流(pipeStream):用于在不同线程间直接传送数据。 Java的JDK中提供了四个类来使线程间通信,我们这里也可以复习一下java中流的使用。 1)PipedInputStream 和 PipedOutputStream 2)PipedWriter 和PipedReader 项目案例:我们采用字节流去原创 2016-02-20 18:02:58 · 300 阅读 · 0 评论 -
JAVA多线程-线程间通信(二)-生产者/消费者模式实现
二、生产者/消费者模式实现 生产者/消费者模式是等待/唤醒机制的经典案例1、一生产与一消费:操作值package org.jksoft.thread.product;import org.junit.Test;/** * 测试一:一生产者与一消费者 * * @author mcl * * 2016-2-20-下午1:34:39 */pub原创 2016-02-20 15:53:28 · 687 阅读 · 0 评论 -
JAVA多线程-线程间通信(一)-等待/通知机制(wait/notify)
线程间通信 线程与线程之间不是独立的个体,它们彼此之间可以相互通信与协作。 线程间通信后,系统之间的交互性会更强大,在大大提交CPU利用率的同时,还会使程序要对各线程任务在处理的过程中进行有效的把控和监督。 学习目录: 一、使用wait/notify实现线程间的通信 二、生产者/消费者模式的实现 三、方法join的使用 四、原创 2016-02-20 13:20:12 · 6248 阅读 · 0 评论 -
JAVA多线程-对象及变量的并发访问(二)volatile关键字
三、Volatile关键字 关键字volatile的主要作用是使变量在多个线程间可见。3.1 关键字volatile与死循环测试案例: 我想通过改变flag的值,从而停止对service的test()方法,进行停止。package org.jksoft.thread.Volatile;public class Test1 { public static void main(S原创 2016-02-20 10:51:39 · 2215 阅读 · 0 评论 -
JAVA多线程-对象及变量的并发访问(一)synchronized详解
一、synchronized同步方法1.1 方法内的变量为线程安全 非线程安全的问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结果也就是“线程安全”的了。1.2 实例变量非线程安全 如果多个线程共同访问1个对象中的实例变量,则有可能出现“非线程安全”问题。1.3 多个对象多个锁 synchronized关原创 2016-02-20 09:07:03 · 4362 阅读 · 0 评论