若是想共享一份數據,能夠使用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定時;實現若是一個線程在執行一個方法,在一個特定時間內沒完成,就釋放掉