| 2012/7/31 | Java基础 | 被围观 11,628 views+
下载和安装JDK: 首先是从Oracle官网中下载JDK,由于我是32位的系统,所以下载了该版本的JDK: jdk-6u33-linux-i586.bin 然后在终端中运行以下命令: 1、给文件加上可执行权限: chmod +x jdk-6u33-linux-i586.bin 2、执行文件进行安装 ./jdk-6u33-linux-i586.bin 接下来是配置JDK环境: 可以在/etc/profile 文件中添加如下的环境变量(我的JDK是安装在/usr/local/Java目录下的): vi /etc/profile JAVA_HOME=/usr/local/Java/jdk1.6.0_33 CLASSPATH=.:$JAVA_HOME/lib/tools.jar PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME CLASSPATH PATH 要使JDK在所有的...
| 2012/7/30 | Java基础 | 被围观 10,271 views+
Executor: 执行对象 * Executor: 执行已提交的Runnable任务的对象 * ExecutorService ThreadPoolExecutor 动态的线程池 AbstractExecutorService * ScheduleExecutorService 任务调度 ScheduledThreadPoolExecutor Executors 工厂方法,构建4种线程池 * CompletionService 生产新的异步任务与使用已完成任务的结果分离开来的服务 ExecutorCompletionService * Future 表示异步计算的结果 * FutureTask * RunnableFuture RunnableScheduledFuture * Callable 返回结果并可能抛出异常的任务 * RejectedExecuti...
| 2012/7/30 | Java基础 | 被围观 7,705 views+
public class Semaphore extends Object implements Serializable 一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,否则就等待。通过acquire()和release()获取和释放访问许可。 相关方法: acquire public void acquire() throws InterruptedException 从此信号量获取一个许可,在提供一个许可前一...
| 2012/7/30 | Java基础 | 被围观 8,359 views+
public interface CompletionService<V> 将生产新的异步任务与使用已完成任务的结果分离开来的服务。生产者 submit 执行的任务。使用者 take 已完成的任务,并按照完成这些任务的顺序处理它们的结果。例如,CompletionService 可以用来管理异步 IO ,执行读操作的任务作为程序或系统的一部分提交,然后,当完成读操作时,会在程序的不同部分执行其他操作,执行操作的顺序可能与所请求的顺序不同。 通常,CompletionService 依赖于一个单独的 Executor 来实际执行任务,在这种情况下,CompletionService 只管理一个内部完成队列。ExecutorCompletionService 类提供了此方法的一个实现。...
| 2012/7/30 | Java基础 | 被围观 10,788 views+
1、Callable: public interface Callable<V> 返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。 Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。 Executors 类包含一些从其他普通形式转换成 Callable 类的实用方法。 call V call() throws Exception 计算结果,如果无法计算结果,则抛出一个异常。  返回:计算的结果抛出:Exception - 如果无法计算结果 2、Future: public interface Future<V> Future ...
| 2012/7/30 | Java基础 | 被围观 35,164 views+
1、类介绍 java.util.concurrent 类 CountDownLatch java.lang.Object java.util.concurrent.CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。如果需要重置计数,请考虑使用 CyclicBarrier。 2、使用场景 在一些应用场合中,需要等待某个条件达到要求后才能做后面的事情;同时当线程都完成后也会...
| 2012/7/30 | Java基础 | 被围观 18,015 views+
1、类介绍 可以用原子方式更新的 int 值。 2、使用场景 主要用于在高并发环境下的高效程序处理。使用非阻塞算法来实现并发控制。 3、相关实例 在并发情况下使用AtomicInteger实现原子化更新进行读写文件。 public class AtomicTest { static long randomTime() { return (long) (Math.random() * 1000); } public static void main(String[] args) { // 阻塞队列,能容纳100个文件 final BlockingQueue<File> queue = new LinkedBlockingQueue<File>(100); // 线程池 final ExecutorService exec = Exec...
| 2012/7/30 | Java基础 | 被围观 13,314 views+
1、类说明: newFixedThreadPool生成一个固定的线程池,使用ThreadPoolExecutor()来构造,可以像Tomcat的线程池一样设置“最大线程数”、“最小线程数”和“空闲线程keepAlive的时间”。 ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) 用给定的初始参数和默认的线程工厂及被拒绝的执行处理程序创建新的 ThreadPoolExecutor。使用 Executors 工厂方法之一比...
| 2012/7/30 | Java基础 | 被围观 17,280 views+
1、类说明: 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。 2、使用场景: 需要所有的子任务都完成时,才执行主任务,这个时候就可以选择使用CyclicBarrier。 3、常用方法: await public int await() throws InterruptedException, BrokenBarrierException 在所有参与者都已经在此 barrier 上调用 await方法之前,将一直等待。如果当前线...
| 2012/7/30 | Java基础 | 被围观 77,574 views+
1、ExecutorService: 是一个接口,继承了Executor: public interface ExecutorService extends Executor { } 2、Executor: 而Executor亦是一个接口,该接口只包含了一个方法: void execute(Runnable command); 3、Executors: 该类是一个辅助类,此包中所定义的 Executor、ExecutorService、ScheduledExecutorService、ThreadFactory 和 Callable 类的工厂和实用方法。 此类支持以下各种方法: • 创建并返回设置有常用配置字符串的 ExecutorService 的方法。 • 创建并返回设置有常用配置字符串的 ScheduledExecutorService 的方法。 • 创建并返回“包装的”ExecutorServi...
随机文章 本月热门 热评
1 【转】纳森·弗莱切:被遗忘的“搜索引擎之父” 2013/9/6
2 汇编cmp指令和条件转移指令实现高级语言中的IF语句功能 2011/4/18
3 Hibernate笔记 – Hibernate的相关帮助文档和在线学习资料 2011/7/16
4 dubbo序列化方式与版本升级的问题 2016/10/15
5 Java基础笔记 – 线程介绍及其创建的两种方法 如何退出线程 2011/10/23
6 ExtJS让被遮盖的窗体显示在最前面以及解决Ext.MessageBox提示框被TabPanel覆盖的方法 2011/7/28
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.