java多线程编程核心技术

1.停止线程的方法
    1.抛异常
    1.运用return
2.暂停线程与恢复
    1.Thread.suspend
    2.Thread.consume
3.暂时让出资源
    yield 让相同优先级的线程之间能适当的轮转执行。但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。
4.释放资源并等待
  wait
5.休眠
   sleep
6.线程的优先级
  线程的优先级具体可继承性 A线程启动B线程,B线程的优先及与A一致
 优先级高并不一定先执行,只是先执行的概率比较大
7.守护纯程
  就像保姆一样,当非守护线程结束,守护线程结束
8.synchronized(特别:互斥性,可见性)
    1.锁的是对象而不是代码
    2.同一对象不同同步方法同步执行
    3.抛出异常,释放锁
    4.锁可以重入
    5.同步不具有继承性,所以在子方法中也需要加入同步
9.volatile
  主要的作用是变量在多个线程间可见
  volatile的作用是强制从公共堆栈中取得变量的值,而不是从线程私有数据栈中取得变量的值
  最致命的缺点:不支持原子性
10.wait
   使当前执行代码的线程进行等待,需要获取锁的前提下,必需加同步锁synchronized
11.notify
   使停止的线程继续运行(随机挑一个),并不是马上释放锁,等同步代码块里的逻辑执行完方可
12.notifyAll
   使所有等待该资源的线程都处于就续状态,notifyAll()可以避免唤醒消费者生产者中的同类而处于假死状态,notify()可能又唤醒了生产者,生产者又需要等待消费者消费
13.join
    等待该线程执行完再执行其他线程
14.ThreadLocal
   使每个线程都绑定自己的值,每一个线程都有自己的共享变量
15.ReentrantLock
    相当于sysnchronzied功能
16.Condition
     RenntrantLock与condition结合可以实现选择性通知,比notifyAll/notify随机有选择权


  lock=new ReentrantLock();
  Condition condition=lock.newCondition();
  lock.lock();
  doSomething();
  condition.await();//condition.signal();
  lock.unlock();
17.公平锁(先到先得)与非公平锁(随机)


 18.tryLock
      仅在调用时锁定未被另一个线程保持的情况下才获取该锁定
 19.schedule和secheduleAtFixedRate特性
      schedule和secheduleAtFixedRate都是在上次任务执行完执行,如果上次任务延时也是这样,但sechecduleAtFixeRate会执行已经过了执行期的任务,schedule不会
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值