A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周四川 中级黑马   /  2012-4-26 11:39  /  2302 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.ArrayList;
  2. import java.util.List;

  3. public class NumberManager {
  4.        
  5.         private int lastNumber=1;
  6.         private List<Integer> queueNumber=new ArrayList<Integer>();
  7.         public synchronized int generateNewManager() //这个synchronized是干啥的?加在这儿起什么作用啊?
  8.         {
  9.                 queueNumber.add(lastNumber);
  10.                 return lastNumber++;
  11.         }
  12.         public synchronized int fetchServiceNumber()
  13.         {
  14.                 return queueNumber.remove(0);
  15.         }
  16. }
复制代码

4 个回复

倒序浏览
多线程同步用的,估计你还没看到多线程吧,没关系,老毕讲得很清楚,看下视频就懂了~
回复 使用道具 举报
1、synchronized关键字的作用域有二种:
1)是某个对象实例内,synchronized aMethod(){}可以防止多个线程同时访问这个对象的synchronized方法(如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象中任何一个synchronized方法)。这时,不同的对象实例的 synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法;
2)是某个类的范围,synchronized static aStaticMethod{}防止多个线程同时访问这个类中的synchronized static 方法。它可以对类的所有对象实例起作用。

2、除了方法前用synchronized关键字,synchronized关键字还可以用于方法中的某个区块中,表示只对这个区块的资源实行互斥访问。用法是: synchronized(this){/*区块*/},它的作用域是当前对象;
回复 使用道具 举报
synchronized  是一个锁,在线程同步的时候会使用到
在这个方法中使用这个关键字修饰后,当一个线程正在执行的时候,另一个线程就必须等当前的操作执行完后,才能接着执行
回复 使用道具 举报
synchronized 关键字:当synchronized 关键字修饰一个方法的时候,该方法叫做同步方法。
Java 中的每个对象都有一个锁(lock)或者叫做监视器(monitor),当访问某个对象的synchronized 方法时,表示将该对象上锁,此时其他任何线程都无法再去访问该synchronized 方法了,直到之前的那个线程执行方法完毕后(或者是抛出了异常),那么将该对象的锁释放掉,其他线程才有可能再去访问该synchronized 方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马