黑马程序员技术交流社区

标题: Java演练(10):多线程-同步函数 [打印本页]

作者: hoshan1    时间: 2015-11-14 10:42
标题: Java演练(10):多线程-同步函数
演练代码如下:
class Bank
{
        //定义计数器,记录存入总金额
        private int sum;
        //定义同步函数
        public synchronized void add(int n)
        {
                        sum = sum + n;
                        //打印结果
                        System.out.println(Thread.currentThread().getName()+"存入100,sum="+sum);
        }
}
class Cus implements Runnable
{
        //创建Bank对象b
        private Bank b = new Bank();
        //复写run方法,写入需要同时执行的代码
        public void run()
        {        //定义循环,每个储户存储300次
                for(int x=0; x<300; x++)
                {
                        b.add(100);
                }
        }
}
public class  Test
{
        public static void main(String[] args)
        {
                //穿件客户对象c
                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