关于java的方法同步
2016-01-24 18:22
393 查看
关于java的方法同步
博客分类: java
Java多线程thread
源于一个想法:比如java中的一个方法
public static void method(){
// ....code
}
是否在前面简单的加上synchronized 就可以实现同步了呢,java真的能帮我们实现吗?
/........................................./
加上synchronized :
public synchronized static void method(){
// ....code
}
/........................................./
我总是不怎么相信,也不确定,这样简单的加上synchronized就能使多线程同步了。但下面的测试让我确定,确实,只要这么简单的做,java就可以实现多线程的同步了。下面看测试代码:
Java代码
/**
* 测试java多线程的同步,使用5个线程调用载体方法。
*
* 测试用例1:给载体方法加上synchronized修饰词(如程序中)。
* 结果:载体方法被同步,每秒打印一条记录;
*
* 测试用例2:去掉载体方法的synchronized修饰词(请自己试下)。
* 结果:载体方法没有被同步,5条记录很快打印完。
*
* 结论:可想而知!给static方法添上synchronized修饰词,方法就被同步。
* @author ayis
*
* Jan 13, 2009
*/
public class TestSynchronized {
public static void main(String args[]){
// 开启5个线程调用载体方法
TestSynchronized.mutilThreadInvoke(5);
}
/**
* 同步的载体方法
*/
public synchronized static void method(){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("method print. time:"+System.currentTimeMillis());
}
/**
* 多线程调用载体方法
* @param n:调用线程的数目
*/
public static void mutilThreadInvoke(int n){
for(int i=0 ; i < n ; i++){
new Thread(
new Runnable(){
@Override
public void run() {
// 调用载体方法
TestSynchronized.method();
}
}
).start();
}
}
}
1
顶
2
踩
分享到:
java 原来也有NaN | 文件过滤器
2009-01-13 17:24
相关文章推荐
- JDK和Cglib动态代理小demo
- 数据挖掘学习笔记-决策树算法浅析(含Java实现)
- Java byte数组转有符号int
- hdu1850 Being a Good Boy in Spring Festival
- spring 配置文件中的占位符 使用 context:property-placeholder
- 简单的java爬虫实现
- Java实现Windows系统服务 JavaService
- C 与 JAVA 的对比分析
- 深入理解Java:注解(Annotation)自定义注解入门
- 使用struts2+spring+hibernate测试多对多关系映射的时候出现懒加载问题:could not initialize proxy - no Session
- JavaEE Tutorials (30) - Duke综合案例研究示例
- JavaEE Tutorials (29) - Duke辅导案例研究示例
- JavaEE Tutorials (28) - Duke书店案例研究示例
- JavaEE Tutorials (27) - Java EE的并发工具
- JavaEE Tutorials (26) - 批处理
- JavaEE Tutorials (25) - 使用Java EE拦截器
- JavaEE Tutorials (24) - 资源适配器示例
- Java如何把String[]类型的记录插入到Mysql中
- 使用Eclipse创建Maven Web工程
- JavaEE Tutorials (23) - 资源适配器和契约