• 高并发编程2


    如果想共享一份数据,可以使用static,使得只产生一份实力

    创建线程,默认都会产生一个线程名thread-

    如果没有传递runable接口或者实现run方法,则不会执行任何东西

    如果构造线程的时候,没有设置threadgrou会获取父线程的threadgroup,此时,父线程和子的在同一group,threadgroup可以统一管理线程

    如果线程的内存不够,可以设置线程的大小,thread的stacksize可以确定线程的站大小(包含stacksixe 的构造函数)

    线程在。start之前,还可以设置daemo状态,如果设置了,则该线程的外部线程执行完后,该线程会结束,如果不设置,则外部线程执行完后,这个线程还可以继续执行,这个方法

    可以用来设置守护线程,如果外部线程已经结束了,守护线程也不必要继续去执行

    https://blog.csdn.net/wangwenjun69/article/list/2?

    线程设置 t.join()可以使得只有该线程执行完有,才会去执行其他的线程,如果两个线程都使用了join,则这两线程会交互执行,

    join(time),让后面的线程先执行time时间后,该线程才会去执行

     在多任务执行的时候,如果需要在全部任务都执行完后才可以执行下面的任务,可以使用join

    Thread.interrupt()方法不会中断一个正在运行的线程。它的作用是,在线程受到阻塞时抛出一个中断信号,这样线程就得以退出阻塞的状态。更确切的说,如果线程被Object.wait,Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(InterruptedException),从而提早地终结被阻塞状态。

    如何优雅的结束线程

    使用开关的方式去结束线程(场景:在多线程执行的时候,有可能会出现异常,通过这种方式去结束线程,回收栈资源)

     

    2.通过打断异常去结束线程

     

     

     如何强制地结束线程:*(设置守护线程,在守护线程中执行任务,如果想结束任务,只要把当前线程停掉,守护线程就停止了)

    开启线程方式:

     join使得执行线程一直占用资源,不会被其他线程使用

    结束线程方式:

    如果既没执行结束也没到时间,就短暂的休眠一下

     

     主程序:

     

     this锁是什么?

    静态方法的锁(monitor是当前的class)

    线层间的通讯

    生产者消费者

    通过notify和wait的实现

    如何查看程序是否死锁

    cmd-->jps-->jstack

     lock的作用

    如何实现多线程采集多台机器的数据

    开启所有的线程,都join好,维护到一个容器里面

    创建一个容器,只能融入规定数量的链接数,

    执行容器中的线程,当执行完后,释放线程资源,让后面的线程进入

    直到所有的数据都采集完,再批量的插入到数据库中

     lock定时;实现如果一个线程在执行一个方法,在一个特定时间内没完成,就释放掉

    线程 池

    1.r任务队列

    2.拒接策略抛异常,临时队列,阻塞()

    3.线程池大小active

    4.线程最小数常态线程

    5.max(线程最大数)

  • 相关阅读:
    Tomcat和nginx负载均衡算法
    (转)CSS浮动(float,clear)通俗讲解
    MvcSiteMapProvider配置使用
    idea出现jdk版本过低导致无法通过编译
    java生成自己的doc文档
    RabbitMQ的应用场景
    java 变量和常量
    IDEA创建新空项目
    java中整型、浮点型、char型扩展
    java中数据类型占多少字节
  • 原文地址:https://www.cnblogs.com/zj-xu/p/11780215.html
Copyright © 2020-2023  润新知