synchronized关键字的使用
来源:互联网 发布:cos大乱斗网络不给力 编辑:程序博客网 时间:2024/05/19 17:25
一、结论
1.synchronized可以用于一个类的方法,如public synchronized void writeA,那么同步代码锁定的对象将是当前实例对象,任何现成访问该实例对象的其他同步方法将必须等待,直到方法writeA执行完成
2.synchronized 也可以作用于一个代码块,如synchronized(this){}
3.synchronized 还可以同步一个对象,如synchronized(object){}
二、示例代码
1.TestSynchronize类的代码(测试同步的对象代码)
/**
*
*/
package com.my.test.sychronize;
/**
* 同步类,测试同步的对象代码
*
* @author rey2008
*
*/
public class TestSynchronize {
// 单例对象
static TestSynchronize m_instance = new TestSynchronize();
/**
* 返回单例对象
*
* @return
*/
public static TestSynchronize getInstance() {
return m_instance;
}
public synchronized void writeA(String _FlagThread) {
// 假如执行时间是5秒
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("ThreadFlag:::" + _FlagThread);
}
public synchronized void writeB() {
System.out.println("bbbbbbbbbbbb");
}
}
2.TestSynchronizeMain类的代码(测试同步的方法入口)
package com.my.test.sychronize;
public class TestSynchronizeMain {
public static void main(String[] args) {
// 线程1
Thread thread1 = new Thread() {
public void run() {
// 执行方法
System.out.println("线程1准备执行writeA...");
TestSynchronize.getInstance().writeA("aa");
System.out.println("线程1的writeA执行成功...");
}
};
// 线程2
Thread thread2 = new Thread() {
public void run() {
// 执行方法
System.out.println("线程2准备执行writeB...");
TestSynchronize.getInstance().writeB();
System.out.println("线程2的writeB执行成功...");
}
};
// 执行线程
thread1.start();
thread2.start();
}
}
3.打印结果
线程1准备执行writeA...
线程2准备执行writeA...(由于线程1的writeA方法sleep了5秒,所以WriteB必须要等待WriteA执行完成才能够继续执行,虽然线程2没有sleep代码,但是writeB方法还是会在writeA方法执行成功后才输出调试信息)
ThreadFlag:::aa
线程1的writeA执行成功...
bbbbbbbbbbbb
线程2的writeA执行成功...
- synchronized关键字的使用
- synchronized关键字的使用 .
- synchronized 关键字的使用
- synchronized 关键字的使用
- Synchronized关键字的使用
- synchronized关键字的使用
- Synchronized 关键字的使用
- Java Synchronized关键字的使用
- synchronized关键字的详细使用
- 同步线程的synchronized关键字的使用
- 黑马程序员-synchronized关键字的使用总结
- java线程以及synchronized关键字的使用
- java_Thread中synchronized关键字的使用
- Java多线程同步 synchronized 关键字的使用
- Java中synchronized关键字的使用
- java 使用synchronized关键字锁定的对象
- JAVA 线程中的synchronized关键字的使用
- 同步锁synchronized 关键字的使用效果
- 技能系统设计笔记 2
- c++
- 技能系统设计笔记 3
- mssql 获取动态sql语句中的值
- easyjweb初试--简单的say hello示例
- synchronized关键字的使用
- 用easyjweb快速实现增删查改
- Jquery 表单取值赋值的一些基本操作
- Struts1.x 中的 Validate 框架
- easyjweb.bat命令
- c++ 的继承
- 关于魔兽世界战斗系统设计的一些想法
- Redhat 5 中裸设备(raw) 的配置
- MFC运行步骤