发个牢骚

解决方案 »

  1.   

    有lock 的 在concarent 包里 拼的 不对 
    在java.util下面
      

  2.   

    是的啊,建议去包一下,变“shuo”!
      

  3.   

    我也记不住,每次都靠百度google
      

  4.   

    .............synchronize~~~这个不用记啊.......会读就会写
      

  5.   

    JDK 5 中的并发包 ReentrantLock 类里有个 lock、unlock 方法达到同样的效果。
      

  6.   

    4楼的还是spell error, Lock和Java里面的sync... ...意思不是很一样的说,"同步的",其实不是为了同步。“同步的”正确的翻译叫“不可重入的”。
      

  7.   

    本来就有LOCK的...只是你不知道
      

  8.   

    synchronize的英文原意是operate simultaneously
    既然如此 它所实现的效果又貌似于其解释相背
    所谓同步效果 我一直质疑这种说法啊
      

  9.   

    采用了synchronized关键字的语言设计者的本意不知为何
    窃以为asynchronized与其实现效果更贴切
      

  10.   

    java的道理就是名字是越长越好,相当头疼
      

  11.   

    楼上的,别“窃”“窃”的,有甘草支持你。synchronized关键字的实现,很有可能是采用类似于Windows API CriticalSection系,和CRITICAL_SECTION 结构结构,这样轻量的临界区实现的。
    这一点,在.Net上是确凿的,我见过C# lock实现的原理文章。代码摘自那篇文章。
    class SomeType {
    private:
       // The private CRITICAL_SECTION field 
       // associated with each object
       CRITICAL_SECTION m_csObject;
    public:
       SomeType() {
          // The constructor initializes the 
          // object's CRITICAL_SECTION field
          InitializeCriticalSection(&m_csObject);
       }
    临界区的意义在于同一个函数的临界区不可以多线程重入,但是Java的synchronized关键字在用为函数修饰的时候,把这种粒度放大了,放大到整个函数。
    C#的Lock在于使得整个对象的每一个方法都带有了这种不可重入的属性,。
    附带一点,教科书里面讲:
    当一个线程访问synchronized方法的时候,其他线程对该方法和该类所有其它synchronized的方法都不能访问了。why?
    看前面的C++代码,很显然的事情。
    当然了,synchronized函数起作用的时候,另外一个函数会产生阻塞和等待的效果,但是这个不能称之为同步。
    同步是一个逻辑上的概念,而谁都不该用这个关键字构造出一种逻辑事务等待的效果。
    它是为了最基本的现场安全考虑的,而同步是为了多线程逻辑的实现考虑的。窃以为,除了Java,怎么也得再学点东西。
      

  12.   

    jdk 5 有lock 和 unlock方法  
    不过如果synchronized关键字可以工作的话,尽量不用Lock/Condition结构
      

  13.   

    hehe 我也找了些原版资料 稍释心中疑惑In computer science, synchronization refers to one of two distinct, but related concepts: synchronization of processes, and synchronization of data. Process synchronization refers to the idea that multiple processes are to join up or handshake at a certain point, so as to reach an agreement or commit to a certain sequence of action. Data synchronization refers to the idea of keeping multiple copies of a dataset in coherence with one another, or to maintain data integrity. Process synchronization primitives are commonly used to implement data synchronization. 
      

  14.   

    In computer science, synchronization refers to one of two distinct, but related concepts: synchronization of processes, and synchronization of data. Process synchronization refers to the idea that multiple processes are to join up or handshake at a certain point, so as to reach an agreement or commit to a certain sequence of action. Data synchronization refers to the idea of keeping multiple copies of a dataset in coherence with one another, or to maintain data integrity. Process synchronization primitives are commonly used to implement data synchronization.
      

  15.   

    但是Java的synchronized关键字在用为函数修饰的时候,把这种粒度放大了,放大到整个函数。 
    甘草...synchronized也可以对变量进行修饰的.
    当然我承认我第一次知道和运用是在操作系统的学习中,当时用的是C.同样是临界区的概念
    窃以为,除了Java,怎么也得再学点东西。 
                                              支持你...不同的语言对比学习,效果更好.
      

  16.   

    lock最大的特点是需要手动操作,所有的资源都是自己去释放和占据.
    跟JAVA的懒惰的原则不符(个人以为)
      

  17.   

    用synchronized可以减少代码  
    从而减少出错的几率
    不过这还要看个人喜好
      

  18.   

    synchronized这个词确实比较怪异的说。它的作用其实是让线程互相排斥着进入方法,与“同时”是完全相反的概念。不过既然人家叫出来了,总有人家的道理。我看不防这样理解:加了synchronized就说明,这段代码或这个方法是可以放心地被多个线程同时使用的,没有加的就不能保证这一点。理解这点的前提是:操作系统(或虚拟机)有自己的调度逻辑,不可能按程序员在应用程序中设想的逻辑来调度。所以,操作系统没有能力来保证应用程序中任何一段代码能让多个线程同时执行却不破坏程序的现有逻辑。从这一点上看,任何应用程序级的代码默认都不是为多个线程写的,它们不能被“同时运行”。而synchronized修饰的代码段保证了这一点,它告诉程序的调用者:我是可以被多个线程同时执行却保持自身逻辑不被破坏的。我想,这就是“同时”这个词用在这里的原因。
      

  19.   

    晕,LZ怎么学英文的,用音记啊,然后想拼出来凭一点记忆就可以了
    syn-chro-nized
    新-可洛-耐丝的
      

  20.   

    接触过synchronized时候还就知道把想独享资源时候把方法,或者代码块去用synchronized锁起来,就知道用了这个效率很低,没研究这么多。。学习一下了
      

  21.   

    接触过synchronized时候还就知道把想独享资源时候把方法,或者代码块去用synchronized锁起来,就知道用了这个效率很低,没研究这么多。。学习一下了
      

  22.   

    接触过synchronized时候还就知道把想独享资源时候把方法,或者代码块去用synchronized锁起来,就知道用了这个效率很低,没研究这么多。。学习一下了
      

  23.   

    接触过synchronized时候还就知道把想独享资源时候把方法,或者代码块去用synchronized锁起来,就知道用了这个效率很低,没研究这么多。。学习一下了
      

  24.   

    public static synchronized Connection getConnection()
    {
    }
      

  25.   

    自己写个继承类啊内容空。类名简单点就OK
    -----------------------------------------
    那你还要记得synchronized才能写出来这个类呀,呵呵 
      

  26.   

    synchronized 瞒好记的.多看几遍就可以了