- 浏览: 885616 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- android (55)
- CSS (23)
- eclipse (25)
- Data Structes and Algorithms (53)
- J2SE (87)
- Java_面试学习_j2se (26)
- java_面试学习_非技术 (13)
- java_gui (2)
- java_设计模式 (27)
- JDBC (10)
- java_web (15)
- hibernate (5)
- Oracle (37)
- Struts2 (7)
- Word-----dos (24)
- Jbpm (3)
- java小技巧 (8)
- math (1)
- flex (12)
- WebService (4)
- 生活 (9)
- 小框架或小语言 (27)
- spring (1)
- 面试~~~软实力 (7)
- jstat的用法 (1)
- jmap (1)
- 数据链路层和传输层的流量控制区别 (1)
- shell (0)
- 财商 (1)
- javascript (0)
- js研究 (1)
- 代码收集 (0)
最新评论
-
海尔群:
http://jingyan.baidu.com/articl ...
android加密 -
完美天龙:
------------------------- ...
asm----字节码操纵 -
houniao1990:
大神,请问 string 类型 定义为 oracle的 cha ...
hibernate注解 -
JamesQian:
Line:103
f.doFilter(msg);
是否需 ...
责任链模式_过滤器模式 -
sacoole:
好评
interview--- 如何从N个数中选出最大(小)的n个数?
下面介绍的是对wait()和notify()以及synchronized()的封装 等待队列的等待和唤醒机制与常用的信号量机制有些相似之处。没错,实际上信号量机制是等待队列机制是同步机制在更高层次上的封装和改良,因为信号量的操作在底层实际上就是通过等待队列的同步机制实现。只不过在在使用信号量时,我们通常强调是资源共享,因而把信号量预先设置为或者,表示资源可用与否。而使用等待队列则意味着,我们在执行某个操作时,强调某个条件满足与否,从而决定当前进程的休眠 1。BlockingQueue 阻塞队列提供了可以阻塞的put和take方法,以及与之等价的可以指定超时的offer和 poll。如果Queue是空的,那么take方法会一直阻塞,直到有元素可用。如果Queue是有线长度的,队列满的时候put方法也会阻塞。 BlockingQueue可以很好的支持生产者和消费者模式,生产者往队列里put,消费者从队列里get,两者能够得好很好的同步。 BlockingQueue的实现类LinkedBlockingQueue和ArrayBlockingQueue是FIFO队列,PriorityBlockingQueue是一个按优先级排序的队列。使用BlockingQueue构建的一个生产者与消费例子: 消费者: public class Consumer implements Runnable { private BlockingQueue<Food> queue; private ExecutorService exec; public Consumer(BlockingQueue<Food> queue, ExecutorService exec) { this.queue = queue; this.exec = exec; } @Override public void run() { while (!exec.isShutdown()) { try { Thread.sleep(2000); Food food = queue.take(); System.out.println("Consumer " + food); } catch (InterruptedException e) { e.printStackTrace(); } catch (RejectedExecutionException e) { } } } } 生产者: public class Producer implements Runnable { private BlockingQueue<Food> queue; private ExecutorService exec; public Producer(BlockingQueue<Food> queue, ExecutorService exec) { this.queue = queue; this.exec = exec; } @Override public void run() { while (!exec.isShutdown()) { Food food = new Food(); try { Thread.sleep(4000); queue.put(food); System.out.println("Produce " + food); } catch (InterruptedException e) { e.printStackTrace(); } catch (RejectedExecutionException e) { } } } } Main: BlockingQueue<Food> queue = new ArrayBlockingQueue<Food>(5); ExecutorService exec = Executors.newFixedThreadPool(3); Producer p1 = new Producer(queue, exec); Producer p2 = new Producer(queue, exec); Consumer c1 = new Consumer(queue, exec); exec.execute(p1); exec.execute(p2); exec.execute(c1); try { Thread.sleep(10000); } catch (InterruptedException ignored) { } exec.shutdown(); 2。Semaphore,信号量 使用信号量进行同步和互斥的控制是最经典的并发模型,java中也提高支持。一个Semaphore管理一个有效的许可 集,许可基的数量通过构造函数传入,通过acquire方法申请一个许可,许可数为0则阻塞线程,否则许可数减一,使用release方法释放一个许个,许可数加一。一个技术量为1的Semaphore为二元信号量,相当于一个互斥锁,表示不可重入的锁。一个使用信号量控制并发容器上届的例子: public class BoundedHashSet<T> { private final Set<T> set; private final Semaphore sem; public BoundedHashSet(int bound) { set = Collections.synchronizedSet(new HashSet<T>()); sem = new Semaphore(bound); } public boolean add(T o) throws InterruptedException { sem.acquire(); boolean wasAdded = false; try { wasAdded = set.add(o); return wasAdded; } finally { if (!wasAdded) sem.release(); } } public boolean remove(Object o) { boolean wasRemoved = set.remove(o); if (wasRemoved) sem.release(); return wasRemoved; } }
发表评论
-
jdbc--批处理
2012-06-08 18:15 1138http://jdgnewtouch.iteye.com/bl ... -
jdbc
2012-06-07 20:51 924http://www.iteye.com/topic/6466 ... -
j2se----jdk6---httpServer
2012-06-05 20:42 1424package com.tdt.server.httpse ... -
j2se基础---ThreadLocal
2012-06-02 20:47 1111package cn.itcast.heima2; ... -
获取运行时的堆栈信息
2011-12-11 11:00 2168public class Hi { public st ... -
简说XML的解析方式(DOM,SAX,StAX)
2011-09-30 08:44 945一般来说,解析XML文件存在着两种方式,一种是event-ba ... -
j2se----Java异步socket
2011-07-11 17:10 1446用异步输入输出流编写Socket进程通信程序 在Merlin ... -
j2se----socket的缓冲区讨论
2011-07-08 19:52 1778关于socket的发送缓冲区 ... -
Tomcat的Socket实现:org.apache.tomcat.util.net(一)
2011-07-08 19:12 1929org.apache.tomcat.util.net包的内容都 ... -
翻转句子中单词的顺序
2011-07-07 22:42 1760题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺 ... -
j2se---同步的Map
2011-07-07 20:50 1008顾名思义LinkedHashMap是比HashMap多了一个链 ... -
j2se---同步的Map
2011-07-07 20:48 10Map<String String> map = ... -
asm----字节码操纵
2011-06-30 09:14 3948想通过asm的代码生成来写.class文件至少得了解下面的 ... -
j2se----java中,如何获得用户当前的工作目录
2011-05-11 09:44 1895获得当前路径, get java current dire ... -
j2se-----zip
2011-05-10 09:05 1059private InitData getInitFile( ... -
j2se-----可变参数列表
2011-04-01 10:53 893public static void main(Strin ... -
UML
2010-12-31 09:42 905组合: 一种强聚合 class Bird{ ... -
j2se-----metadata
2010-12-19 17:14 1017DatabaseMetaData的用法 ... -
python------一小时学会
2010-12-08 16:28 1929先上java与python的相互调用 如何在Java中调用Jy ... -
j2ee------download.jsp
2010-12-08 13:39 1124Logger logger = C ...
相关推荐
Java J2SE中的多线程技术是编程中的重要概念,特别是在开发高效并发应用程序时。本篇内容主要围绕线程的基础知识、创建与启动、状态转换、控制方法、优先级以及线程组展开。 首先,线程被定义为程序内部的顺序控制...
这里提到的"core-2.3.0 + QRCode + zxing-1.6-core + zxing-j2se-1.7"组合,是与二维码处理相关的Java库集合。下面我们将详细探讨这些组件以及它们在实际开发中的应用。 首先,"core-2.3.0"可能指的是某个项目的...
jaxmpp-j2se-3.0.0.jar(XMPP/Tigase开发,java代码类型客户端使用的jar包) 需要的朋友自己下载,一个朋友让我帮他找的,就顺便发出来给更多需要的朋友吧
资源名称:Java-J2se、J2ee开发全程视频教程和源码(87集)资源目录:【】Java-J2se-J2ee全程教程(01-10)【】Java-J2se-J2ee全程教程(11-20)【】Java-J2se-J2ee全程教程(21-30)【】Java-J2se-J2ee全程教程(31...
本文将深入探讨在给定的压缩包中涉及的几个关键组件:`core-3.3.3`, `javase-3.3.3`, `zxing-1.7-core` 和 `zxing-j2se-1.7`,以及与之相关的JDK版本,包括JDK1.7和JDK1.8。这些组件主要用于二维码生成和处理,对于...
zxing-j2se-1.7[用于编解二维码].7z"压缩包包含的是ZXing项目的1.7版本,专门针对Java平台的版本,主要用途是处理二维码的编码和解码工作。 首先,我们来了解下ZXing的核心组件——zxing-core-1.7.jar。这个JAR文件...
《J2SE-孙鑫授课总结的PPT》是一份深度总结Java标准版(Java 2 Platform, Standard Edition,简称J2SE)核心知识的教学资料,由知名IT教育专家孙鑫精心编撰。这份PPT涵盖了Java SE的各个方面,旨在帮助学习者系统地...
这份名为“j2se-doc-cn”的压缩包包含的是Java API的中文版,对于中国开发者来说,无疑极大地便利了理解和使用Java语言。 在Java API文档中,你可以找到关于类库的详细信息,这些类库构成了Java开发的基础。例如,`...
标题“j2se-server.rar_connect”暗示我们关注的是Java SE(标准版)服务器端的连接技术,特别是与移动设备交互的代码。描述中提到的"connect mobile javacode"进一步明确了我们要探讨的是如何使用Java来实现移动...
Java中的IO流是Java平台标准版(J2SE)的核心特性之一,用于处理输入和输出操作。在Java中,流是一组数据的有序传输,可以是字节或字符。流的分类、节点流与处理流的概念,以及各种流类的使用方法是理解Java IO系统...
javase 的api文档 学习java最基本的东西 大家应该都懂得
jar包,官方版本,自测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用