高并发编程2

若是想共享一份数据,能够使用static,使得只产生一份实力数据库

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

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

若是构造线程的时候,没有设置threadgrou会获取父线程的threadgroup,此时,父线程和子的在同一group,threadgroup能够统一管理线程this

若是线程的内存不够,能够设置线程的大小,thread的stacksize能够肯定线程的站大小(包含stacksixe 的构造函数).net

 

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

能够用来设置守护线程,若是外部线程已经结束了,守护线程也没必要要继续去执行3d

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

 

 

线程设置 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定时;实现若是一个线程在执行一个方法,在一个特定时间内没完成,就释放掉