什么是线程互斥,什么是线程同步。synchronized是为了实现线程同步呢还是为了实现线程互斥呢?

解决方案 »

  1.   

    同步就是防止多个线程访问同一个对象,造成数据不安全。
    如售票系统,多个窗口多个线程同时运行售票,有个编号为100这张票,当线程thread1正在卖它的时候,其余的窗口线程就不能也卖这张票了。
    再如:一个男生和一个女生是男女朋友的关系,那么,另外的一个男生要想追到这个女生,就得先等前面这个男生和这个女生分手了以后才可以,两个男生不能同时访问这个女生,这就是同步。
    异步就是,在一个家庭中,几个兄弟姐妹可以同时拥有相同的父母,不需要等待,都可以同时拥有,同时访问。 
      

  2.   

    没听说过线程互斥。只听说过 互斥资源。互斥资源 就是说 这个资源,同一时刻,只能被一个进程访问,其他进程不能进入临界区。线程同步,我觉得应该指的是,线程之间的相互协作。就是说,一道工序,分成几个步骤,每个步骤都可以分配一个线程来做,
    但是,这些步骤,有些是可以同时进行的,有些必须要有先后顺序才行,
    线程同步,应该就是指的多个线程间,维持这种正常的先后顺序。
    比如,生产者和消费者问题,这就是一个线程同步问题,必须在有产品的时候,才能消费。当然,上述观念,纯属个人理解。synchronized关键字,可以实现互斥资源。
      

  3.   

    线程互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。线程同步:
    在所有的内核对象中,事件内核对象是个最基本的。它包含一个使用计数(与所有内核对象一样),一个BOOL值(用于指明该事件是个自动重置的事件还是一个人工重置的事件),还有一个BOOL值(用于指明该事件处于已通知状态还是未通知状态)。事件能够通知一个线程的操作已经完成。有两种类型的事件对象。一种是人工重置事件,另一种是自动重置事件。他们不同的地方在于:当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程。当一个自动重置的事件得到通知时,等待该事件的线程中只有一个线程变为可调度线程。
      

  4.   

    线程同步 是说  线程之间协同工作, 有序的执行每个线程;这个时候,因为有序,自然达到了 线程互斥的效果。线程互斥是一个  结果,是通过线程  synchronized同步(协同工作)实现的。