您的位置:首页 > 编程语言 > Java开发

java多线程学习(二)

2017-07-02 11:35 204 查看

同步函数

同步函数:在函数上加上了同步关键字synchronized进行修饰。

同步表现形式:1.同步代码块 2.同步函数

同步函数例子:

class Bank
{
private int sum;
//private Object obj=new Object();
public synchronized void add(int n)
{
//synchronized(obj)注释部分为同步代码块
//{
sum=sum+n;
try{Thread.sleep(10);}catch(Exception e){}//让线程在这稍微停一下
System.out.println("sum="+sum);
//}
}
}
class Customer implements Runnable
{
private Bank b=new Bank();
public void run()
{
for(int x=0;x<3;x++)
{
b.add(100);
}
}
}


同步函数使用的锁是什么?

函数需要被调用,哪个对象不确定,但是都用this来表示,同步函数使用的锁就是this。

如果同步函数被static修饰呢?

static方法随着类加载,这时不一定有该类的对象,但是一定有一个该类的字节码文件对象,这个对象简单的表示方式就是:类名.class Class

举例部分代码:

while(true)
{
synchronized(SaleTicket.class)//类名.class
{
if(tickets>0)
{
try{Thread.sleep(10);}catch(Exception e){}//让线程在这稍微停一下
Sysytem.out.println(Thread.currentThread.getName()+"..."+tickets--);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程