这个方法是线程中一个同步锁的方法函数,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();
-
- }
- }
复制代码 |