java里同步关键字synchronized 理解
2017-02-10 00:07
381 查看
说明:
在java里不仅线程安全的集合可以同步
用synchronized修饰的方法也是同步的
同步:是指当前只有一个线程可以调用,如果其它线程想调用,默认等待,等第一个线程释放了,然后在调用
=======================例子=====================
package test;
/**
* 在java里不仅线程安全的集合是同步的
* 用synchronized修饰的方法也是同步的
同步:是指当前只有一个线程可以调用,如果其它线程想调用,默认等待,等第一个线程释放了,然后在调用.
* 测试java多线程的同步,使用5个线程调用载体方法。
*
* 测试用例1:给载体方法加上synchronized修饰词(如程序中)。
* 结果:载体方法被同步,每秒打印一条记录;
*
* 测试用例2:去掉载体方法的synchronized修饰词(请自己试下)。
* 结果:载体方法没有被同步,5条记录很快打印完。
*
* 结论:可想而知!给static方法添上synchronized修饰词,方法就被同步。
*
*/
public class TestSynchronized {
public static void main(String args[]){
// 开启8个线程调用载体方法
TestSynchronized.mutilThreadInvoke(8);
}
/**
* 同步的载体方法
*/
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();
}
}
}
在java里不仅线程安全的集合可以同步
用synchronized修饰的方法也是同步的
同步:是指当前只有一个线程可以调用,如果其它线程想调用,默认等待,等第一个线程释放了,然后在调用
=======================例子=====================
package test;
/**
* 在java里不仅线程安全的集合是同步的
* 用synchronized修饰的方法也是同步的
同步:是指当前只有一个线程可以调用,如果其它线程想调用,默认等待,等第一个线程释放了,然后在调用.
* 测试java多线程的同步,使用5个线程调用载体方法。
*
* 测试用例1:给载体方法加上synchronized修饰词(如程序中)。
* 结果:载体方法被同步,每秒打印一条记录;
*
* 测试用例2:去掉载体方法的synchronized修饰词(请自己试下)。
* 结果:载体方法没有被同步,5条记录很快打印完。
*
* 结论:可想而知!给static方法添上synchronized修饰词,方法就被同步。
*
*/
public class TestSynchronized {
public static void main(String args[]){
// 开启8个线程调用载体方法
TestSynchronized.mutilThreadInvoke(8);
}
/**
* 同步的载体方法
*/
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();
}
}
}
相关文章推荐
- Java线程同步机制synchronized关键字的理解
- Java同步关键字Synchronized深入理解
- Java线程同步机制synchronized关键字的理解
- Java线程同步机制synchronized关键字的理解
- Java线程同步机制synchronized关键字的理解
- Java的synchronized关键字:同步机制总结
- Java的synchronized关键字:同步机制总结
- 初学Java多线程:使用Synchronized关键字同步类方法
- JAVA线程同步synchronized关键字及锁解析
- 对java 同步synchronized 的理解
- 关于java的synchronized关键字,wait(),notify() 的例子,方便大家快速理解和应用。
- java 多线程 同步 synchronized 的个人理解和用法
- Java的synchronized关键字:同步机制总结
- Java的synchronized关键字:同步机制总结
- Java的synchronized关键字:同步机制总结
- java中的synchronized关键字的理解
- Java多线程初学者指南(10):使用Synchronized关键字同步类方法
- Java的synchronized关键字:同步机制总结
- Java的synchronized关键字:同步机制总结
- 转载 Java的synchronized关键字:同步机制总结