信号量:Semaphore类
创建带指定许可数的信号量: Semaphore semaphore = new Semaphore (1);----------->创建一个许可的信号量
信号量用来限制访问共享数资源的线程数。在访问资源之前,线程必须从信号量获取许可,在访问完资源后释放信号量。
任务通过调用信号量的acquire()方法获取许可,通过调用信号量的release()释放许可。一旦获取许可,信号量中的可用许可的总数减1,一旦许可释放,信号量中的许可数量加1。
死锁:线程1获取object1的锁,线程2 获取object2的锁,线程1需要object2的锁,线程2需要object1的锁,但线程1、线程2都不释放自己现有的锁,导致一直等待,进入死锁。
避免死锁:资源排序,将要获取的资源进行排序。线程2必须要先获取object1才能获取object2,线程1先获取object1,接着获取object2就能避免死锁。
线程的状态(新建、就绪、运行、结束、阻塞)