易截截图软件、单文件、免安装、纯绿色、仅160KB

Java 多线程编程之六:线程之间的通信(附源代码)

Java 多线程编程之六:线程之间的通信(附源代码)
源代码下载
       
多线程编程中,线程之间的通信是一个比较复杂的问题。大家往往搞不懂什么是竞争资源?什么时候考虑同步?怎么进行同步?什么是线程通信?怎么进行通信?很
多朋友面试的时候都遇到过这样类似的一个编程题:给定一个场景,编写代码来恰当使用等待、通知和通知所有线程。相信很多朋友对
java.lang.Object
类的这三个方法都很熟悉,notify、notifyAll、wait,但是真正能运用自如的却不多。因此面试中挂在上面那个面试题上的朋友还真不在少
数。本文列举了一个经典的生产者、消费者源代码,以代码的角度来说明这个问题,并附加示例源代码,相信读者看过之后对线程之间的通信交互会有更进一步的认识!
        生产者-消费者模型,堪称多线程程序中的经典。本源码中将使用 java.lang.Object 的 wait、notify、notifyAll 来实现这个模型,这才是最重要的。
        开始以前,让我们先来熟悉一下生产者-消费者模型的游戏规则:
1、仓满不能生产;
2、藏空不能消费;
3、消费者消费产品前发现不能满足此次消费后通知生产者进行生产;
4、生产者生产出产品后通知消费者进行消费。
        好的。开始之前再来回顾一下对象锁的概念……这是最关键的。每个对象都有一个内置锁。当程序运行到非静态 synchronized 方法上时,将自动获得与正在执行代码类的当前实例(即 this 实例)有关的锁。java.lang.Thread.sleep() 方法执行时并不释放此锁;java.lang.Object.wait() 方法执行时释放此锁。好了,就到这里吧,说太多了一来显得作者罗嗦,二来也有侮辱读者 Java 基础的嫌疑。开始代码演示。
生产者-消费者模型-仓库源代码
package com.defonds.thread;
/**
*
*
* 项目名称:ThreadApp
* 类名称:Godown
* 类描述:生产者-消费者模型之仓库
* 创建人:Defonds
* 创建时间:2010-1-26 上午10:50:00
* 修改人:Defonds
* 修改时间:2010-1-26 上午10:50:00
* 修改备注:
* @version
*
*/
public class Godown {

private final int max_size = 100;//最大库存容量
private int curNum;//现有库存量

/**
*
* 创建一个新的实例 Godown.
*
* @param curN


相关文档:

Java中的transient,volatile和strictfp关键字

Java
中的transient,volatile和strictfp关键字
    如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如:
Java
代码
class
 T {  
   transient
 
int
 a;  
//不需要维持
  
   int ......

java性能的优化(二)

    三.优化JAVA程序设计和编码,提高JAVA程序性能的一些方法。
   
通过使用一些前面介绍过的辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码或更改设计方法。我们一般会选
择后者,因为不去调用以下代码要比调用一些优化的代码更能提 ......

java性能的优化(三)

    关于线程的操作,要注意如下几个方面。
    (1) 防止过多的同步
   
如上所示,不必要的同步常常会造成程序性能的下降。因此,如果程序是单线程,则一定不要使用同步。
    (2)
同步方法而不要同步整个代码段
   对某个方法或函数进行同步比对 ......

Java调用SQL Server的存储过程详解

1使用不带参数的存储过程
  使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列。不带参数的 call 转义序列的语法如下所示:
  
以下是引用片段:
{call procedure-name}
  作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程:
  
以下是引用片段: ......

java和。net之间的互操作

.net网站theserverside.com上,有一篇讲.net和java互操作的文章,收集了net和java互操作性的文章精选
[url]http://www.theserverside.net/tt/articles/showarticle.tss?id=InteropGuide[/url]
In the heterogeneous world of enterprise computing, interoperability is no longer a luxury but a necessity. The multip ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号