鸟哥Java学习之线程间通信-多线程

1.等待唤醒机制
    涉及的方法:wait(),notify(),notifyAll() 这些方法都必须定义在同步中,明确自己操作的是哪个锁上的线程。
 r.wait(),r 为同步的锁。

2.多生产者多消费者问题
见 ProducerConsumerDemo.java

3.同步代码块,对于锁的操作是隐式的,而新版本中有Lock,jdk1.5以后将同步和锁封装成对象,并将操作锁的隐式方法定义到了该对象中。
     Lock接口替代了同步代码块或同步函数synchronized的使用,可以一个锁上加上多组监视器    Condition接口替代了Object中的wait(),notify(),notifyAll方法,将其进行了封装,变成condition监视器对象,可以任意锁进行组合。
Lock lock = new ReentrantLock;//新建互斥锁
lock.lock(); //获取锁
 lock.unlock(); //释放锁
 Condition producer_con = lock.newCondition();
 producer_con.await();
consumer_con.signal();

4.wait和sleep区别:
    wait可以指定时间也可以不指定,sleep必须指定时间;在同步中时,对cpu的执行权和锁的处理不同,wait释放执行权,释放锁,sleep释放执行权,不释放锁

5.停止线程:stop方法(已过时,不安全)run方法结束
    任务中都会有循环结构,只要控制住循环就可以结束任务,用定义标记
 private boolen flag=true;
  while(flag){}
 public void setflag(){flag=flase;}

    如果线程处于冻结状态,无法读取状态,此时用interrupt()方法将线程从冻结状态强制恢复到运行状态,让线程具备cpu执行资格,但是强制动作会发生InterruptedException,记得要处理,如将标记改为flase。

6.守护线程(后台线程),setDaemon(),在开启线程前使用。当所有前台线程结束时,后台线程自动结束。
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/paomojj1/article/details/51558988
文章标签: java 多线程
个人分类: Java
上一篇鸟哥Java学习之Object类-面向对象
下一篇鸟哥Java学习之String类 and StringBuffer类-常用对象API
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭