java多线程总结

线程实现方式

  • 实现runnable接口,同时new一个thread构造器参数为runnable实现类,start即可
  • 继承thread类,start即可
  • 通过future和callable实现可以又返回值的线程。thread构造器中传入future对象,该对象的构造器中传入callable的匿名内部类

线程控制

  • join 主线程等待子线程执行完毕后再执行
  • setDemon 设置线程为守护线程,前台线程死亡,该线程死亡

同步代码块、方法

  • 同步方法 方法修饰符为synchronized,既调用该方法的对象如果没有执行完则其他线程不能操作,锁对象为this即调用该方法的对象
  • 同步块 synchronized某对象
    uncaughtException
  • 线程自定义异常处理器,实现UncaughtException即可,在实现方法中执行异常后处理

线程池

  • 线程池状态
    running shundown stop treminated
    构造时需指定核心线程池大小、最大线程池大小,阻塞队列,线程完成销毁时间
    需要创建线程时向线程池询问是否能加入,根据当前线程多少决定是否加入,如果超额,则加入阻塞队列中。阻塞队列不能加入则根据最大线程数决定是否加入该线程,如果依旧不能,则拒绝加入该线程
  • FrokJoin
    将大任务拆分为小任务,需界定多小,通过静态变量决定,以及需要指明多少任务即start和end

Lock锁

  • 通过lock.lock锁,unlock解锁
  • 死锁即两个乃至多个线程相互等待的情况

线程通信

  • wait设置线程阻塞,通过notify唤醒线程
  • 如果是通过lock锁住对象则需要condition对象来控制通信,cond.await阻塞线程,cond.single来唤醒线程

阻塞队列

常用生产者消费者模式,以及线程池会涉及。在操作队列时有四种状态,返回异常、特定值、阻塞以及在不超过指定时间的阻塞

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。