如果想共享一份数据,可以使用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(线程最大数)