黑马程序员技术交流社区
标题:
java中synchronized()的参数有什么用,对这个参数本身会不会...
[打印本页]
作者:
axuan
时间:
2014-6-10 14:47
标题:
java中synchronized()的参数有什么用,对这个参数本身会不会...
java中synchronized()的参数有什么用,对这个参数本身会不会有什么影响?
作者:
18353665932
时间:
2014-6-10 15:48
这个方法是线程中一个同步锁的方法函数,synchronized()内部的参数可以是任意对象,里面的参数其实就是多线程的一个锁,这个锁在同步中要求是统一的锁,否则会出现死锁或者其他的线程安全问题现象,代码如下,,这个程序用的是obj这个超级类作为锁,这个锁本身也不能说没有影响,有时候多线程机制的时候,这个锁必须是统一的,就像这个锁,所有的线程用的都是这个锁obj,所以,内部参数都是统一的!
//创建一个类,里面是计算存钱的数量的
class Bank{
private int sum;
private Object obj = new Object();
public void add(int num)
{
synchronized(obj){
sum = sum+num;
try{Thread.sleep(10);}catch(InterruptedException e){}//让线程稍微停一下
system.out.println(sum);
}
}
}
//创建一个类,继承Runnable方法,创建多线程
class Cus implements Runnable
{
private Bank b = new Bank();
public void run()
{
for(int x = 0;x<3;x++)
{
b.add(100);
}
}
}
class BankDemo
{
public static void main(String[] args)
{
Cus c = new Cus();
Thread t1 = new Thread(c);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2