
多线程、Java EE
你温柔的背后是心情的曲折
技术达人
展开
-
JAVA多线程—并发集合
java.util.concurrent包下的并发集合java.util.concurrent.ConcurrentHashMap java.util.concurrent.ConcurrentSkipListMap java.util.concurrent.CopyOnWriteArrayList java.util.concurrent.CopyOnWriteArraySet java.原创 2017-04-21 17:59:42 · 315 阅读 · 0 评论 -
JAVA多线程—可阻塞的队列类的介绍
以下是基于典型的生产者-使用者场景的一个用例。注意,BlockingQueue 可以安全地与多个生产者和多个使用者一起使用。 import java.util.concurrent.BlockingQueue;public class BlockingQueueTest { public static void main(String[] args) { BlockingQue原创 2017-04-21 14:56:48 · 313 阅读 · 0 评论 -
JAVA多线程—Exchanger-线程间交换数据
用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。讲解Exchanger的比喻:好比两个毒贩要进行交易,一手交钱、一手交货,不管谁先来到接头地点后,就处于等待状态了,当另外一方也到达了接头地点(所谓到达接头地点,也就是到到达了准备接头的状态)时,两者的数据就立即交换了,然后就又可以各忙各的了。exchan原创 2017-04-21 14:13:54 · 746 阅读 · 0 评论 -
JAVA多线程—CountDownLatch-一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
CountDownLatch类介绍犹如倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当计数到达0时,则所有等待者或单个等待者开始执行。可以实现一个人(也可以是多个人)等待其他所有人都来通知他,这犹如一个计划需要多个领导都签字后才能继续向下实施。还可以实现一个人通知多个人的效果,类似裁判一声口令,运动员同时开始奔跑。用这个功能做百米赛跑的游戏程序不错哦!原创 2017-04-21 11:47:54 · 835 阅读 · 0 评论 -
JAVA多线程—CyclicBarrier-一个同步辅助类,它允许一组线程互相等待
用通俗的话解释这个类的用法:表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指定地点集合碰面,这就好比整个公司的人员利用周末时间集体郊游一样,先各自从家出发到公司集合后,再同时出发到公园游玩,在指定地点集合后再同时开始就餐,…。讲解CyclicBarrier的功能时,通过辅助画图的方式说明,效果会更好。 三个线程干完各自的任务,在不同的时刻到达集合点后,就可以接着忙各自的工作去了,再到原创 2017-04-21 11:18:45 · 383 阅读 · 0 评论 -
JAVA多线程—传统线程机制-运行Thread.run()还是Runnable.run()
问题:如果在Thread子类覆盖的run方法中编写了运行代码,也为Thread子类对象传递了一个Runnable对象,那么,线程运行时的执行代码是子类的run方法的代码?还是Runnable对象的run方法的代码?示例代码:public class TraditionalThread { public static void main(String[] args) { Runn原创 2017-04-20 22:47:30 · 3421 阅读 · 0 评论 -
JAVA多线程—Semaphore实现信号灯
Semaphore实现信号灯Semaphore可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。 Semaphore实现的功能就类似厕所有5个坑,假如有十个人要上厕所,那么同时能有多少个人去上厕所呢?同时只能有5个人能够占用,当5个人中的任何一个人让开后,其中在等待的另外5个人中又有一个可以占用了。另外等原创 2017-04-21 10:55:12 · 652 阅读 · 0 评论 -
JAVA多线程—Lock&Condition实现线程同步通信
Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁;如果你的代码修改数据,只能有一个人在写,且不能原创 2017-04-21 10:33:07 · 321 阅读 · 0 评论 -
JAVA多线程—CompletionService的使用介绍
CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Callable对象。 好比我同时种了几块地的麦子,然后就等待收割。收割时,则是那块先成熟了,则先去收割哪块麦子。示例代码:package syn;import java.util.concurrent.Callable;import java.util.concurren原创 2017-04-21 09:08:25 · 1303 阅读 · 0 评论 -
JAVA多线程—Executors类的应用
固定大小的线程池、缓存线程池、单一线程池代码示例:import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ThreadPoolTest { public static void main(String[] args) { ExecutorSer原创 2017-04-21 00:16:42 · 346 阅读 · 0 评论 -
JAVA多线程—Callable和Future的使用介绍
Future取得的结果类型和Callable返回的结果类型必须一致,这是通过泛型来实现的。 Callable要采用ExecutorSevice的submit方法提交,返回的future对象可以取消任务。java.util.concurrent.Callable<V>类的介绍 大概的意思就是说:Callable接口和Runnable接口相似,两者的实例都可以用于运行另一个线程。但是Callab原创 2017-04-21 08:56:15 · 384 阅读 · 0 评论 -
JAVA多线程—并发库中对“数字”的支持
介绍其中对Integer的支持原创 2017-04-20 23:43:31 · 359 阅读 · 0 评论 -
JAVA基础—volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized的块语句,在多线程访问转载 2017-06-07 13:57:52 · 301 阅读 · 0 评论 -
Android基础—基于Socket实现上传大文件
上节中我们给大家接触了Socket的一些基本概念以及使用方法,然后写了一个小猪简易聊天室的 Demo,相信大家对Socket有了初步的掌握,本节我们来学习下使用Socket来实现大文件的断点续传! 这里讲解的是别人写好的一个Socket上传大文件的例子,不要求我们自己可以写出来,需要的时候会用 就好!1.运行效果图:1.先把我们编写好的Socket服务端运行起来:转载 2017-04-11 16:32:43 · 2408 阅读 · 2 评论 -
JAVA基础—PushbackInputStream类简单介绍
缓存的新应用之一就是回推(pushback)的实现。回推用于输入流,以允许读取字节,然后再将它们返回(回推)到流中。PushbackInputStream类实现了这一思想,提供了一种机制,可以“偷窥”来自输入流的内容而不对它们进行破坏。PushbackInputStream类具有以下构造函数:PushbackInputStream(InputStream inputStream)Push原创 2017-04-08 17:53:34 · 5432 阅读 · 2 评论 -
Android例子—基于socket实现简易聊天室
实现的效果图:先把我们的服务端跑起来:接着把我们的程序分别跑到两台模拟器上:接下来我们来写代码:首先是服务端,就是将读写socket的操作放到自定义线程当中,创建ServerSocket后,循环 调用accept方法,当有新客户端接入,将socket加入集合当中,同时在线程池新建一个线程!另外,在读取信息的方法中,对输入字符串进行判断,如果为bye字转载 2017-04-08 16:09:58 · 3155 阅读 · 1 评论 -
Android基础—XML数据解析的三种方式
1.三种解析XML方法的比较2.SAX解析XML数据核心代码:SAX解析类:SaxHelper.java:/** * Created by Jay on 2015/9/8 0008. */public class SaxHelper extends DefaultHandler { private Person person;原创 2017-04-05 23:25:08 · 280 阅读 · 0 评论 -
JAVA基础—盘点最流行的Java工具
最流行的工具并不一定是“最好的”,对于开发来说,什么是最好的,取决于使用场景。然而,当选择工具时,流行程度是不可忽视的一个重要因素,并不是因为工具的流行增加了其价值,而是因为广泛使用的社区带来了无价的资源和支持。流行的工具更容易学习,因为会有很多人乐意帮助你。如果是开源的话,麻烦就更少了。因为有更多的人在审核代码和进行测试,能考虑到更多的情况。在很多情况下,都会有一个对立的竞争对手转载 2016-08-17 15:00:34 · 301 阅读 · 0 评论 -
JAVA基础—格式化数字DecimalFormat
在输出数字时,有时需要给数字配上单位,有时需要数字具有一定的精度,也有时需要用科学计数法表示数字。关键技术剖析:java.text.DecimalFormat类专门用于格式化数字。需要为DecimalFormat提供格式化模式Pattern。通过构造方法或者DecimalFormat的applyPattern方法设置模式。Pattern的类型为字符串。调用DecimalFormat的form原创 2017-03-10 09:07:57 · 607 阅读 · 0 评论 -
JAVA基础—常用正则表达式验证
java常用正则表达式验证原创 2017-01-17 16:09:35 · 402 阅读 · 0 评论 -
JAVA基础—一个对象占用多少字节
import java.lang.instrument.Instrumentation;import java.lang.reflect.Array;import java.lang.reflect.Field;import java.lang.reflect.Modifier;import java.util.ArrayDeque;import java.util.Deque;impo原创 2016-08-07 23:15:49 · 1167 阅读 · 6 评论 -
JAVA多线程—Java5中的线程并发库
软件包 java.util.concurrent 的描述 在并发编程中很常用的实用工具类。此包包括了几个小的、已标准化的可扩展框架,以及一些提供有用功能的类,没有这些类,这些功能会很难实现或实现起来冗长乏味。下面简要描述主要的组件。另请参阅 locks 和 atomic 包。 执行程序接口。Executor 是一个简单的标准化接口,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和原创 2017-04-20 23:33:09 · 543 阅读 · 0 评论