标签:synchronized java 线程同步
线程同步是指对共享资源,若不是共享资源则不涉及线程同步问题。
synchronized方法可以锁定对象,也可以锁定代码块。
当锁定对象时,修饰在类的方法前面。记住:若两个线程同时访问一个对象的不同方法,且对象有一个synchronized方法和一个非synchronized方法,则是两个线程并不涉及同步问题。只有当访问同一个对象的synchronsized方法(可以是不同的synchronized方法)时才会有同步。
比如对象toy有如下两个方法
package concurrent1;
public class toy {
private int number;
public toy(){
number = 100;
}
synchronized public void paint()
{
System.out.println("thread:"+Thread.currentThread().getName() + ":paint begin");
try{
int i = (int) (Math.random()*1000);
Thread.sleep(i);
}
catch(Exception e)
{
}
System.out.println("thread:"+Thread.currentThread().getName()+":paint");
System.out.println("thread:"+Thread.currentThread().getName() + ":paint end");
}
synchronized public void write()
{
System.out.println("thread:"+Thread.currentThread().getName() + ":write begin");
try{
int i = (int) (Math.random()*1000);
Thread.sleep(i);
}
catch(Exception e)
{
}
System.out.println("thread:"+Thread.currentThread().getName()+":write");
System.out.println("thread:"+Thread.currentThread().getName() + ":write end");
}
}package concurrent1;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
toy mytoy = new toy();
boy myboy = new boy(mytoy);
boy youboy = new boy(mytoy);
myboy.setName("myboy");
youboy.setName("youboy");
myboy.start();
youboy.start();
}
}结果:
thread:myboy:write begin thread:myboy:write thread:myboy:write end thread:myboy:paint begin thread:myboy:paint thread:myboy:paint end thread:youboy:write begin thread:youboy:write thread:youboy:write end thread:youboy:paint begin thread:youboy:paint thread:youboy:paint end
若将paint方法前的synchronized取消掉,输出如下,可以看出write方法是异步执行的,只有paint方法是同步执行的。
thread:myboy:write begin thread:youboy:write begin thread:myboy:write thread:myboy:write end thread:myboy:paint begin thread:myboy:paint thread:myboy:paint end thread:youboy:write thread:youboy:write end thread:youboy:paint begin thread:youboy:paint thread:youboy:paint end
本文出自 “开心一杯茶” 博客,请务必保留此出处http://gugw9handsome.blog.51cto.com/1187812/1784207
标签:synchronized java 线程同步
原文地址:http://gugw9handsome.blog.51cto.com/1187812/1784207