Java Thread 다 중 스 레 드 동기 화,잠 금,통신

14452 단어 thread
스 레 드 동기 화,동기 화 잠 금,잠 금
스 레 드 통신
스 레 드 그룹 과 처리 되 지 않 은 이상
Callable 과 Future
12、    
                 ,            。           
    Case:      ,     :
    A、      、  ,          
    B、        
    C、                
    D、          ,   ,        
 
        2           ,           。         ;
    synchronized (object) {
        //    
    }
    Java         ,        synchronized       ,             。
            ,           ,           this
    public synchronized void editByThread() {
        //doSomething
    }
 
    A、              
    B、                   ,      
    C、              ,           
               ,              ,                    。
      Account       ,  money     , 2       money ,           。
        Account        ,         synchronized   。
    
    
          synchronized       ,               。                  ,
                ,        ,      this。                      。
                ,               。
    public synchronized void drawMoney(double money) {
        //    
    }
      :synchronized      、   ,       、    
    
                          ,                ,        :
    A、                    ,           (    )       。
    B、      2     :           ,         2   ;              。
                           ,                     。
    
              
               、      ,              ,               ?
                      ,              :
    A、        、         ,          
    B、         、     break、return       ,    
    C、         、           Error、Exception,                
    D、         、     ,             wait  ,      ,       
 
    A、           、     ,     Thread.sleep()/Thread.yield()         ,             
    B、           、     ,           suspend        ,            。        suspend、resume
    
       (Lock)
        :Lock    synchronized   synchronized           ,Lock      ,      ,        Condition  
    Lock                   。  ,              ,          Lock    ,
                    Lock  。                , :ReadWriteLock(   ),        ,
        ReentrantLock(    )。   Lock        、   。
     
    class C {
        //   
        private final ReentrantLock lock = new ReentrantLock();
        ......
        //        
        public void method() {
            //  
            lock.lock();
            try {
                //          
            } catch() {
            
            } finally {
                lock.unlock();//   
            }
        }
    }
      Lock       ,               finally         。
    
               ,    Lock      lock     。       synchronized                   ,
        “  ->  ->   ”     ,                。
                        、        ,                      ,        ,
                ,                        。
    Lock                    ,         tryLock  ,          lockInterruptibly()  ,
              tryLock(long, timeUnit)  。
    ReentrantLock     ,               ReentrantLock    ,ReentrantLock             lock       ,
           lock()   ,       unlock()    ,                          。
    
      
     2                       ,JVM           ,              。
        ,           ,          ,           ,    。
          Foo   ,   Bar    ,      Bar      ,   Foo  2             ,      。
      Thread  suspend        ,  Java            。
 
13、    
    (1)、       
          : 2   , 2            。——                          ,
                      ,          。   2     、2     。
                  Object ,   wait、notify notifyAll    , 3       Thread 。  3             ,   2   :
        A、    synchronized       ,         this       ,             3   。
        B、    synchronized        ,      synchronized        ,               3   
         、wait  :          ,               notify   notifyAll        。
                wait   3   :    wait  ,     ,        ;      wait      wait,
                 2              。  wait                      。
         、notify:                 。                 ,              。
                               ( wait  ),           。
         、notifyAll:                 。                   ,         。
    (2)、        
               synchronized        ,      Lock       ,                 ,
             wait、notify、notifyAll          。
           Lock    ,Java    Condition      ,  Condition         Lock         ,
                     (wait-set),     ,Lock             ,Condition          。
        Condition           Lock   ,      Lock   Condition  ,  Lock   newCondition  。
        Condition     :
         、await:            wait  ,        ,        Condition signal   signalAll        。
             await         :long awaitNanos(long nanosTimeout),void awaitUninterruptibly()、awaitUntil(Date daadline)
         、signal:    Lock          ,          Lock     ,              。
                      Lock      ,  await  ,           。
         、signalAll:    Lock          。          Lock      ,           。
     
    (3)、     
                 ,    3   :
        PipedInputStream、PipedOutputStream、PipedReader PipedWriter  Pipe.SinkChannel Pipe.SourceChannel,
                    、       IO   Channel。
        A、  new          、   
        B、       、    connect   2   、       
        C、     、       2   
        D、2                 、         
    
14、         
    ThreadGroup     ,               ,Java     
    Java          ,                 。                  。
                   ,             。      ,               。
                    ,          ,       ,                 。
    Thread                 ,      :
    A、Thread(ThreadGroup group, Runnable target):target run              ,  group   
    B、Thread(ThreadGroup group, Runnalbe target, String name):target run               ,     group   ,     name
    C、Thread(ThreadGroup group, String name):     ,     name,  group 
 
                  ,  Thread  ThreadGroup setter  ,    getThreadGroup              ,
    getThreadGroup       ThreadGroup     ,       。
    ThreadGroup 2     :
    A、ThreadGroup(String name):name      
    B、ThreadGroup(ThreadGroup parent, String name):    、               
 
                ,                 ,      ThreadGroup getName    ,
              。ThreadGroup        :
    A、activeCount:           
    B、interrupt:            
    C、isDeamon:            
    D、setDeamon:             ,          ,                          ,         。
    E、setMaxPriority:          
    uncaughtException(Thread t, Throwable e)                         ,
    Thread.UncaughtExceptionHandler Thread            ,
void uncaughtException(Thread t, Throwable e)      t         , e          
     
    Thread    2           :
    A、staticsetDefaultUnaughtExceptionHandler(Thread.UncaughtExceptionHandler eh):                      
    B、setUncaughtExceptionHandler(Thread.UncaughtExceptionHander eh):              
 
    ThreadGroup   Thread.UncaughtExceptionHandler  ,                        。             ,
    JVM                ,(setUncaughtExceptionHandler       ),          ,             。
      ,JVM              uncaughtException    ,           :
    A、          ,        uncaughtException       
    B、                      (setDefaultUnaughtExceptionHandler         ),                 
    C、            System.err     ,      
 
15、Callable Future
    Callable       call            , call   run     :
    A、call        
    B、call          
 
    Callable   JDK5      ,    Runnable    ,  Callable        Thread target。  call         ,
    call        ,            。      call      ?
    JDK1.5   Future     Callable    call      ,  Future       FutureTask   ,      Future  ,
        Runnable  —    Thread target。
 
    Future                    Callable  :
    A、boolean cancel(Boolean mayInterruptlfRunning):     Future    Callable  
    B、V get():  Callable    call      ,            ,               
    C、V get(long timeout, TimeUnit unit):  Callable    call      ,          timeout unit     。
                 Callable         ,    TimeoutException。
    D、boolean isCancelled:   Callable          ,   true。
    E、boolean isDone:  Callable      ,   true
 
      、               :
     、  Callable      ,   call  , call      ,         。
     、  Callable      ,  FutureTask    Callable  , FutureTask      Callable   call      
     、  FutureTask    Thread   target  、      
     、  FutureTask                    
    

좋은 웹페이지 즐겨찾기