高并发编程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(线程最大数)

原文地址:https://www.cnblogs.com/zj-xu/p/11780215.html