`

用字符串做锁

    博客分类:
  • java
阅读更多
有些无聊,只是为了从侧面说明“XXX”字符串被intern后之后,所有具有相同值的“XXX”都指向堆中同一个对象。

public class CPByStringTest {

	public static class Consumer extends Thread {

		@Override
		public void run() {
			long start = System.currentTimeMillis();
			synchronized("lock"){
				System.out.println("consumer get lock (ms)" + (System.currentTimeMillis() - start));
				try {
					System.out.println("sleep Consumer for 10 s");
					sleep(10000);
					System.out.println("wake up Consumer");
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				"lock".notifyAll();
			}
		}

	}

	public static class Producer extends Thread {

		@Override
		public void run() {
			long start = System.currentTimeMillis();
			synchronized("lock"){
				System.out.println("Producer get lock (ms)" + (System.currentTimeMillis() - start));
				try {
					System.out.println("sleep producer for 10 s");
					sleep(10000);
					System.out.println("wake up producer");
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				"lock".notifyAll();
			}
		}

	}

	public static void main(String[] args) {
		new Consumer().start();
		new Producer().start();
	}

}

运行结果(debug mode):
consumer get lock (ms)47
sleep Consumer for 10 s
wake up Consumer
Producer get lock (ms)10047
sleep producer for 10 s
wake up producer
分享到:
评论
1 楼 scanfprintf123 2009-11-15  
花花,你的设计模式怎么没有移动过来?

相关推荐

    给数据库连接字符串加把安全锁

    ### 给数据库连接字符串加把安全锁 在开发ASP.NET应用程序的过程中,安全性一直是开发者关注的重点之一。特别是对于数据库连接字符串的处理,不当的管理可能会导致敏感信息泄露,进而造成不可估量的损失。本文旨在...

    字符串解密大作业

    本“字符串解密大作业”着重于字符串的解密技术,这是一种将已加密的字符串还原成原始信息的过程,通常涉及到加密算法的理解与逆向工程。 在解密过程中,首先我们需要理解加密机制。常见的加密方法有对称加密(如...

    字符串文件

    ### 字符串类型在Redis中的应用与特性 #### 概述 Redis是一种广泛使用的开源内存数据结构存储系统,常被用作数据库、缓存和消息中间件。在Redis中,字符串是最基本的数据类型之一,其核心特点在于它可以存储二进制...

    Vb-pointer-with-string-.rar_VB 字符串操作_vb字符串效率_vb指针字符串

    例如,使用API函数如`GlobalLock`和`GlobalUnlock`来锁定和解锁内存块,`CopyMemory`(或`RtlMoveMemory`)来进行内存拷贝,这样就可以直接处理字符串的字节,而无需创建新的字符串对象。 下面是一些使用指针处理...

    Python中字符串切片技术在游戏开发中的应用研究.pdf

    - 单个索引:可以使用一个索引值来获取字符串中的单个字符。 - 范围索引:使用两个索引值,形如[start:end],可以提取从start位置开始到end位置(不包括end)的子串。 - 步长切片:通过在范围索引中加入步长参数,如...

    C++编写的字符串源代码

    9. **线程安全**:如果代码需要在多线程环境中使用,那么自定义字符串类还需要考虑线程安全问题,如使用互斥锁或其他同步机制。 通过分析这些文件,我们可以学习到如何在C++中设计和实现一个自定义的字符串类,理解...

    C++字符串完全指南

    可以使用互斥锁或其他并发控制机制来保护共享的字符串。 通过深入学习和理解以上知识点,开发者可以有效地利用C++中的字符串功能,编写出高效且健壮的代码。同时,结合实际项目经验,掌握在不同场景下选择合适字符...

    当索引字符串为空时,删除此索引,并从新排列索引

    代码中使用了`List<string>`来存储非空的字符串。`List<T>`是.NET Framework中的一个类,它提供了一种动态数组的方式来存储元素。相比于数组,列表具有以下优势: - **动态大小**:列表可以在运行时动态地增加或...

    redis字符串类型_动力节点Java学院整理

    首先,Redis并没有简单地使用C语言中的`char[]`数组来存储字符串。考虑到性能和效率,Redis采用了`SDS`(Simple Dynamic String)结构体来封装`char[]`。SDS结构体包含三个字段: 1. `len`: 存储字符串的实际长度,...

    QhStrAdd_字符串_源码.zip

    2. **内存管理**:在自定义字符串处理函数时,可能涉及到动态内存分配和释放,如使用`malloc`、`calloc`、`realloc`和`free`。 3. **字符串连接**:源码可能包含不同的字符串连接方法,比如通过循环逐个字符复制,...

    被爱可以字符串处理工具 注册版

    被爱可以字符串处理工具是一款专为IT从业者和程序员设计的专业软件,主要功能是进行字符串的处理和计算。在日常编程工作中,字符串操作是一项常见的任务,无论是数据解析、格式化输出还是编码转换,都需要对字符串...

    07-字符与字符串-自己使用的C语言教程PPT-适合老师备课或者自学.pptx

    - 使用`scanf()`读取字符串时,若输入长度超过数组大小,可能会导致未定义的行为。 - `getchar()`和`putchar()`适用于简单的字符处理,而`scanf()`和`printf()`更适合处理复杂的数据格式。 理解和熟练掌握字符与...

    计算机软件-商业源码-16 将字符串中的内容写入数组.zip

    例如,在C/C++中,可以使用`strcpy()`和`strlen()`函数获取字符串长度,然后动态分配一个足够大的字符数组,最后用`strncpy()`将字符串复制到数组中。在Java中,`toCharArray()`方法可以直接将字符串转换为字符数组...

    批量替换字符串

    "批量替换字符串"这个主题就涉及到了文件处理和文本编辑的核心技术。它指的是在选定的目录及其所有子目录下,针对多种文件格式(如txt、html、php等)进行特定字符串的全局替换。这种操作常见于网站代码优化、文本...

    文本内字符串查找程序源码

    在IT领域,字符串查找是一个常见的任务,特别是在编程和文本处理中。这个压缩包文件的标题“文本内字符串查找程序源码”表明它包含了一个用于在多个文本文件中搜索特定字符串的程序的源代码。描述中提到的“最终版...

    更新DLL及exe的字符串信息函数

    当需要更新或修改这些字符串时,我们可以使用Windows API中的`UpdateResource`函数来实现。 `UpdateResource`函数是Windows API的一部分,它允许程序在运行时动态地添加、删除或更新资源。这个函数的使用涉及到以下...

    vb下加密字符简单串示例

    解密时,再用同样的密钥对密文进行异或,就能还原出原始的字符串。 以下是一个简单的VB字符串加密示例: ```vb Public Function EncryptString(ByVal plainText As String, ByVal key As Integer) As String Dim ...

    MyString 字符串类仿写_C++_(四种版本,引用计数,迭代器,加锁)

    通过使用锁(如互斥量mutex),我们可以确保在任何时候只有一个线程能够修改字符串,从而保证数据一致性。这种方式增加了并发安全性,但会引入线程同步的开销。 最后,`MyString(v4.0)`添加了迭代器支持。迭代器是...

    SFHFKeychainUtils保存字符串到keychain

    这篇文档将深入探讨如何使用SFHFKeychainUtils来保存字符串到钥匙串,并讨论其背后的安全机制。 首先,了解钥匙串的基本概念。钥匙串是iOS系统提供的一种安全存储机制,它可以存储各种类型的敏感信息,包括但不限于...

Global site tag (gtag.js) - Google Analytics