使用字符串常量加锁

原创 2018年04月17日 10:06:57

String常量池的缓存功能对以下代码可能出现非预期情况

public class StringLock {

	public void method() {
		//new String("字符串常量")
		synchronized ("字符串常量") {
			try {
				while(true){
					System.out.println("当前线程 : "  + Thread.currentThread().getName() + "开始");
					Thread.sleep(1000);		
					System.out.println("当前线程 : "  + Thread.currentThread().getName() + "结束");
				}
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		final StringLock stringLock = new StringLock();
		Thread t1 = new Thread(new Runnable() {
			@Override
			public void run() {
				stringLock.method();
			}
		},"t1");
		Thread t2 = new Thread(new Runnable() {
			@Override
			public void run() {
				stringLock.method();
			}
		},"t2");
		
		t1.start();
		t2.start();
	}
}
尝试改代码synchronized ("字符串常量")为synchronized (new String("字符串常量")),试试运行结果。

彻底掌握 Javascript(七)字符串【专家辅导】

-
  • 1970年01月01日 08:00

thread15 - 不要使用字符串常量做锁

package com.neutron.t15; import java.util.concurrent.TimeUnit; /** * 不要以字符串常量作为锁定对象 * 在下面的例子...
  • mediocre117
  • mediocre117
  • 2017-06-10 12:10:55
  • 292

不建议使用从字符串常量到‘char*’的转换

文章转载于:http://blog.csdn.net/haoel/article/details/1395358 我相信,使用C/C++多年的人对下面这个字符串赋值语句都不会陌生吧。 ...
  • chenqiai0
  • chenqiai0
  • 2013-05-05 13:15:20
  • 3709

C++ 编译出现字符串常量转化问题

出现问题原因:char *msg[26] = { "","","GET","POST","", "","OTHER","","","",...
  • zhangxxxww
  • zhangxxxww
  • 2015-10-06 11:59:16
  • 2386

C语言中字符串常量的妙用

根据给定的值打印横向柱状图: p
  • yue492008824
  • yue492008824
  • 2014-05-16 17:22:34
  • 298

VB中字符串常数

Since these constants are built into VBScript, you don't have to define them before using them. Use ...
  • suifenghuidong
  • suifenghuidong
  • 2014-07-16 22:31:22
  • 1487

c中字符串常量的若干问题

本文是通过几篇转帖的文章整理而成的,内容稍有修改: 一、 C语言中,为什么字符串可以赋值给字符指针变量 char *p,a='5'; p=&a;                  ...
  • coutamg
  • coutamg
  • 2016-12-04 13:22:03
  • 627

文字常量区、字符串常量、地址

可以: #include int main(void) { char str[8] = {0}; str[0] = *"jiang"; printf("%s\n", str); retur...
  • Justme0
  • Justme0
  • 2012-03-31 00:50:25
  • 1888

C#后台输出换行符出现“未结束的字符串常量”的解决方法

C# 后台:string sayHello = "你好!/n"; sayHello += "你好!"; sayHello = "alert('" + sayHello + "');"; //...
  • wenlaishiwo
  • wenlaishiwo
  • 2010-12-24 13:00:00
  • 1306

通过sizeof和strlen认识字符串常量

通过sizeof和strlen认识字符串常量shawpinlee posted @ 2007年09月15日 08:35PM in C/C++ C/C++试题 -Part 1字符串型常量字符串常量是双引...
  • wild_fox86116
  • wild_fox86116
  • 2007-10-20 19:51:00
  • 3167
收藏助手
不良信息举报
您举报文章:使用字符串常量加锁
举报原因:
原因补充:

(最多只允许输入30个字)