java,synchronized方法
2014-08-29 10:36
89 查看
java为防止资源冲突而提供了synchronized关键字支持,当任务要执行被synchronized关键字修饰的代码片段时,先检查锁是否可用,然后获取锁,执行代码,释放锁。
package com.zhiru;
class RwThread implements Runnable{
public synchronized void f(){
for(int i=1;i<=5;i++)
System.out.println("loop "+i);
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName()+"start...");
f();
}
}
public class ThreadSync {
public static void main(String[] args) {
// TODO Auto-generated method stub
Runnable t=new RwThread();
Thread t1=new Thread(t,"t1");
Thread t2=new Thread(t,"t2");
t1.start();
t2.start();
}
}
若方法f未被synchronized关键字修饰结果如下:
t2start...
t1start...
loop 1
loop 1
loop 2
loop 2
loop 3
loop 3
loop 4
loop 4
loop 5
loop 5
加上synchronized关键字:
t2start...
t1start...
loop 1
loop 2
loop 3
loop 4
loop 5
loop 1
loop 2
loop 3
loop 4
loop 5
package com.zhiru;
class RwThread implements Runnable{
public synchronized void f(){
for(int i=1;i<=5;i++)
System.out.println("loop "+i);
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName()+"start...");
f();
}
}
public class ThreadSync {
public static void main(String[] args) {
// TODO Auto-generated method stub
Runnable t=new RwThread();
Thread t1=new Thread(t,"t1");
Thread t2=new Thread(t,"t2");
t1.start();
t2.start();
}
}
若方法f未被synchronized关键字修饰结果如下:
t2start...
t1start...
loop 1
loop 1
loop 2
loop 2
loop 3
loop 3
loop 4
loop 4
loop 5
loop 5
加上synchronized关键字:
t2start...
t1start...
loop 1
loop 2
loop 3
loop 4
loop 5
loop 1
loop 2
loop 3
loop 4
loop 5
相关文章推荐
- Java多线程初学者指南(10):使用Synchronized关键字同步类方法
- Java多线程初学者指南(10):使用Synchronized关键字同步类方法
- java-synchronized修饰方法释疑
- Java:多线程,线程同步,synchronized关键字的用法(同步代码块、非静态同步方法、静态同步方法)
- 请说明Java语言中的关键字synchronized的使用方法
- Java多线程初学者指南(10):使用Synchronized关键字同步类方法
- java synchronized静态同步方法与非静态同步方法,同步语句块
- 初学Java多线程:使用Synchronized关键字同步类方法
- java synchronized同步方法调用另一个同步方法,锁机制问题
- (转)初学Java多线程:使用Synchronized关键字同步类方法
- Java锁机制Synchronized方法简介(转)
- java学习——线程启动的两种方法,Time定时器,synchronized 的使用
- Java【多线程知识总结(7)】多线程同步问题-关于synchronized代码块和synchronized方法的应用
- java-synchronized修饰方法释疑
- Java多线程初学者指南(10):使用Synchronized关键字同步类方法
- java 多线程 Synchronized方法和方法块 synchronized(this)和synchronized(object)的理解
- Java【多线程知识总结(7)】多线程同步问题-关于synchronized代码块和synchronized方法的应用
- 初学Java多线程:使用Synchronized关键字同步类方法
- 关于Java同步机制中synchronized同步方法
- java synchronized修饰普通方法,修饰静态方法,修饰代码块,修饰线程run方法 比较