- 浏览: 295351 次
- 性别:
- 来自: 山东-东营-利津县
文章分类
- 全部博客 (155)
- J2SE (25)
- JavaScript (8)
- Linux (4)
- Struts (12)
- Mysql (8)
- Oracle (9)
- IT与生活 (12)
- EJB (7)
- JMS (1)
- Spring (5)
- Hibernate (6)
- Jsp&Servlet (4)
- 开发小技巧 (5)
- log4j (4)
- 面试题 (20)
- DWR (2)
- JBPM (1)
- iBATIS (4)
- 数据结构 (1)
- svn (1)
- 反编译 (1)
- DB2 (4)
- Tomcat (2)
- WebService (2)
- JBoss (5)
- jquery (1)
- HttpClient (1)
- jdom (1)
- mina (1)
最新评论
-
moment52:
为什么会选择用拦截器,不用action呢
使用ThreadLocal结合struts2的拦截器实现分页 -
wzk527:
很好
编程:编写一个截取字符串的函数,(网上流传的答案有的是错的)输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4 -
shijian2292:
lz辛苦了,写的真详细,我正郁闷这些问题呢,学习了。
struts2复习笔记(version2.1.6)(01~06) -
fgh2011:
如果想要在虚拟机之外的 局域网机器中访问应用 ip需要设置成自 ...
使用secureCRT连接用VMWare虚拟机装的Linux系统 -
wangljr:
...
什么是声明式事务?什么是编程式事务?
synchronized 的语法: synchronized 可以作为一个method的修饰符,也可以一段代码里出现,先说在代码里出: 其语法是 synchronized(xx) { //your code } 这个xx需要是一个Object,只要是一个Object就行,如: String s="haha"; synchronized(s) { //your code } 不是Object不行,如: int n=3; synchronized(n) { //your code } 是不可以的,有autoboxing也不行。 如果你理解this的含义,那么 synchronized(this) { //your code } 也很好理解,它需要一个Object,而this是一个特殊的Object,当然可以这样用。 再说synchronized 修饰 method的情况,如果synchronized修饰一个非static的method, 如: public synchronized void aMethod() { //some code } 相当于: public void aMethod() { synchronized(this) { //some code } } 修饰一个 static的method, 如: public static synchronized void aMethod() { //some code } 相当于: public static synchronized void aMethod() { synchronized(XX.class) { //some code } } XX是这个方法所在的类,XX.class 也是一个Object,类型是Class而已,在一个 ClassLoader里,它是唯一的,就是独一无二的object 总之synchronized的语法可以统一为: synchronized(a var) { do something } synchronized 的语义: 这是我自己的理解, synchronized(xx) { //your code } 的语义是,在xx这个Object的“授权”、“名义”、 “面子”下,执行 your code。要注 意的是,xx只能授权给一个人(线程),当xx授权给某个人执行后,就不能再授权给别人了 。 当那个人执行完那段代码后,xx才能继续授权给其它人执行,可以理解为,别人在xx的 授权下,执行完这段代码后,把这个权利又还给xx了。 当xx不能授权给一个人时,这个人 必须等在这里,知道xx可以授权给它。 (上面说的人都是线程) synchronized 的作用: synchronized是用在多线程环境中的,作用简单的说,就是不允许 “某些” 线程 同时执 行到一段代码里。 这个 “某些”线程 怎么界定? 是由那个xx object决定的,就是当两 个线程执行到 synchronized的时候,需要同一个Object授权时,这两个线程不能同时执行 到需要授权的代码。 极端情况是 系统你所有的线程都不能执行到这段代码里,那么你就选一个极端唯一的 object作为xx,一般选Class object,如: synchronized(String.class) { } 具体到应用比较复杂,举两个例子: 1: public class Test1 implements Runnable { public void run() { synchronized(this) { try { System.out.println(System.currentTimeMillis()); Thread.sleep(2000); System.out.println(System.currentTimeMillis()); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { Test1 test=new Test1(); for(int i=0;i<10;i++) { new Thread(test).start(); } } } 2: public class Test1 implements Runnable { public void run() { synchronized(this) { try { System.out.println(System.currentTimeMillis()); Thread.sleep(2000); System.out.println(System.currentTimeMillis()); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { for(int i=0;i<10;i++) { new Thread(new Test1()).start(); } } }
两个例子中,都有一段synchronized的代码。
在1中,main方法中创建的10个线程 不能同时进入到那段代码执行,因为这10个线程需要让
同一个object授权
而
在2中,main方法中创建的10个线程 可以同时进入到那段代码执行,因为10个线程是让不同
的object授权的,均授权成功,同时进入到那段代码执行
发表评论
-
关于java读取properties文件的路径问题
2013-02-02 23:57 13141之前对于JAVA读取propertie ... -
StringBuffer与StringBuilder的区别
2012-07-23 16:08 0相信大家看到过很多比较String和StringBuffer区 ... -
java中Date与String的相互转化 (转)
2012-07-23 15:35 1285import java.text.DateFormat; ... -
使用eclipse fat插件制作可运行jar
2012-06-05 13:59 0转载自http://blog.csdn.net/jikeyzh ... -
使用eclipse fat插件制作可运行jar
2012-06-05 13:59 1087转载自http://blog.csdn.net/jikeyzh ... -
关于JAVA类中各个成分的初始化顺序(转载)
2012-04-28 23:30 831... -
关于J2SE一些细节问题的整理(如有错误,欢迎留言指正)
2011-10-23 16:03 10521、关于继承中private的 ... -
Java heap space[转]
2011-09-13 14:17 800PermGen space的全称是Permanent Gene ... -
super关键字与内存分布
2010-05-13 21:19 1204当我们new出一个子类对象的时候,这个子类对象内部肯定会包含一 ... -
继承中的构造方法
2010-05-13 21:12 10391、子类的构造过程中必须调用其基类的构造方法。 2、子类在自 ... -
关于方法的重载
2010-05-12 16:41 851public class Person { publ ... -
成员变量和局部变量的一点不同
2010-05-12 12:25 903在java中,如果你在class中定义了一个成员变量然 ... -
环境变量中的系统环境变量和用户环境变量有什么区别?
2010-05-10 21:31 2853系统环境变量的意思是无论你是用那个用户帐号登陆后都能够共 ... -
final关键字到底修饰了什么
2010-05-05 22:55 1054final使得被修饰的变量"不变",但是由 ... -
System.getProperty(String name)的常用值总结(转载)
2010-03-29 15:41 1055常用的System.getProperty(),这里贴一下,省 ... -
各种进制之间的转换(转载)
2010-03-24 11:59 1883各种进制转换 计算机中常用的数的进制主要有:二进制、八进制、十 ... -
Class.forName(String name)的作用(转载)
2010-03-22 23:08 1309Class.forName(xxx.xx.xx) 返回的是一个 ... -
ClassLoader的加载机制相关
2010-03-22 23:05 998面试题:能不能自己写个类叫java.lang.String让泪 ... -
张孝祥J2SE加强自学笔记(48-56)
2010-03-22 22:49 168748、类加载器的一个高级问题的实验分析: 这次我们新建一个w ... -
张孝祥J2SE加强自学笔记(41-47)
2010-03-22 22:46 133641、自定义泛型方法的练习与类型推断总结: (1)编写一个方 ...
相关推荐
Java提供了多种机制来处理并发问题,其中synchronized关键字是最基本也是最常用的同步手段之一。本文将深入探讨synchronized关键字的工作原理、使用方式以及在实际编程中的应用。 synchronized关键字是Java中实现...
Java中的synchronized:同步方法与线程安全
Java 中的 synchronized 用法详解 Java 中的 synchronized 关键字是用于解决多线程并发问题的重要工具之一。它可以被用于方法、代码块和变量上,以实现对共享资源的互斥访问控制。本文将对 Java 中的 synchronized ...
已同步 将Objective-C的@synchronized指令公开给Swift。 与Objective-C指令类似,Synchronized获取一个互斥锁,运行一些代码,并在代码完成或引发异常时释放该锁。链接框架可通过获得同步。 要安装它,只需将以下行...
同步语句块允许我们对特定代码块进行同步,其语法结构如下: ```java synchronized (object) { // 需要同步的代码 } ``` 这里的`object`通常是一个实例或类引用,它代表要锁定的对象。例如: ```java public ...
"Java 中 synchronized 用法详解" Synchronized 是 Java 语言中用于解决多线程共享数据同步问题的关键字。它可以作为函数的修饰符,也可以作为函数内的语句,用于实现同步方法和同步语句块。在 Java 中,...
#### 二、使用场景与语法 ##### 1. 同步方法 可以通过在方法声明前加上`synchronized`关键字来创建同步方法,例如: ```java public synchronized void method() { // 方法体 } ``` 对于静态方法,可以使用`...
### volatile与synchronized的区别 #### 一、锁的特性:互斥与可见性 在并发编程中,锁作为实现线程安全的一种手段,其核心作用在于提供两种特性:互斥和可见性。 - **互斥**:互斥是指在任何时刻,只允许一个...
Java中的`synchronized`关键字是多线程编程中的一个重要概念,用于控制并发访问共享资源,以保证数据的一致性和完整性。这个关键词提供了互斥锁机制,防止多个线程同时执行同一段代码,确保了线程安全。 一、`...
在Android开发中,`synchronized`关键字是Java语言中用于实现线程同步的重要工具,它在多线程环境下确保了共享资源的安全访问。本测试案例深入探讨了`synchronized`的使用方法,包括同步单个对象、同步多个对象以及...
其基本语法如下: ```java synchronized (syncObject) { // 需要同步执行的代码 } ``` 这里的`syncObject`是指定作为锁的对象。通常情况下,可以选择当前对象`this`作为锁,也可以选择某个静态对象作为锁来同步...
"Java 锁机制 Synchronized" Java 锁机制 Synchronized 是 Java 语言中的一种同步机制,用于解决多线程并发访问共享资源时可能出现的一些问题。 Java 锁机制 Synchronized 的概念 在 Java 中,每个对象都可以被...
在Java编程语言中,`synchronized`关键字是一个重要的并发控制机制,用于确保多线程环境下的数据一致性。本文将深入探讨`synchronized`的几种使用示例,包括方法加锁、代码块加锁(针对`this`和对象)以及静态方法...
在Java编程语言中,`synchronized`关键字是一个非常重要的并发控制机制,用于保证多线程环境下的数据一致性。本文将深入解析`synchronized`的工作原理、使用方式以及它在并发编程中的重要性。通过分析提供的源码,...
Java中的`synchronized`关键字是多线程编程中的一个重要概念,用于控制并发访问共享资源,确保数据的正确性和一致性。在Java中,每个对象都有一个与之关联的锁,也称为同步锁,它允许线程在访问共享资源时进行互斥...
### Synchronized关键字在Java中的应用 #### 概述 `synchronized`是Java语言中的一个关键字,主要用于实现线程同步,防止多个线程同时访问共享资源而导致的数据不一致问题。通过`synchronized`关键字,开发者可以...
`synchronized`也可以应用于代码块,其语法是`synchronized(对象){}`。这里的`对象`是监视器对象,当多个线程试图进入同一监视器对象的同步代码块时,只有一个线程能进入,其他线程必须等待。 4. **监视器对象与锁...
### Java synchronized 关键字详解 #### 一、synchronized关键字简介 `synchronized`是Java语言提供的关键字之一,用于实现线程间的同步控制。通过在方法或代码块上使用`synchronized`,可以确保同一时间只有一个...
在Java编程语言中,`synchronized`关键字是一个至关重要的概念,它主要用于实现线程同步,以确保多线程环境下的数据一致性与安全性。本篇文章将深入探讨`synchronized`的使用,包括其基本原理、使用方式以及实际应用...
《深入理解Java中的synchronized关键字》 在Java编程语言中,`synchronized`关键字是用于实现线程同步的重要工具,它的本质在于确保多线程环境下的数据一致性与安全性。通过`synchronized`,我们可以控制对共享资源...