当前位置:网站首页>Pooling idea: string constant pool, thread pool, database connection pool
Pooling idea: string constant pool, thread pool, database connection pool
2022-07-03 22:07:00 【ZJH'blog】
Pool thought
Resources are reused , Return after use , Save a lot of time and resources wasted in building and destroying , There are still a lot of resources for establishment and destruction
String constant pool
Constant pools are independent of stacks and heaps , The following two creation methods are different
1, Save the contents of constant pool directly
String s1 = “ Save directly ”
2,new String Save indirectly
String s2 = new String(“ Save indirectly ”)
difference :
- Save directly , No matter how many are created, they are the same
- Indirect saving actually saves the address value , Point to thread pool , This method produces two objects ; If you save indirectly for many times , for example :
String s3 = new String(“ Save indirectly ”)
String s4 = new String(“ Save indirectly ”)
String s5 = new String(“ Save indirectly ”)
In fact, only one is created in the constant pool " Save indirectly " The object of , The reference object creates 3 Time
Thread pool
Advantages compared with tradition
- Traditional thread implementation methods include thread creation Thread to destroy Time for , Threads can be reused , So the thread pool is introduced , Create and destroy threads Change it to Return after use , Not destroyed , Reuse resources , Improve thread utilization , Improve the response speed of the program
- Easy to manage Thread objects in a unified way
- You can control the maximum concurrency
Thread pool model —— Bank
Counter window : Threads , Without destroying
Waiting area : Waiting in line
When the window is not enough : Add threads
When there are no seats in the waiting area : Refusal strategy —— Report an exception or give it to a thread to go left
There are too many free windows : Reduce threads
Thread pool creation
JUC The concurrency toolkit provides ThreadPoolExecutor Creating a thread pool ,ThreadPoolExecutor Yes 8 Parameters , Respectively :
- corePoolSize: Number of core threads —— The number of counter windows that never close
- maximumPoolSize: Maximum number of threads —— The maximum number of windows
- keepAliveTime: Thread lifetime —— How long does it take for a non core thread to be destroyed without receiving a task —— You need to set the unit unit
- unit:TimeUnit.SECONDS or TimeUnit.MICROSECONDS You can wait
- BlockingQueue : Waiting in line ,new ArrayBlockingQueue<>(capacity:10) here capacity The value of the set 10
- ThreadFactory: Thread factory —— No need to create , Call directly Executors.defaultThreadFactory()
- RejectedExecutionHandler: Refusal strategy ——new ThreadPoolExecutor.AbortPolicy() The handler of the rejected task , Throw a RejectedExecutionException
After creating it, use ExecutorService Class object to receive , Then you can directly call
for example : utilize lambda expression
for(){
executorService.execute( ()->{ Thread business logic } );
}// The thread pool will automatically adjust the current number of threads
executorService.shutdown();// Close thread pool
Reference resources :
Database connection pool
advantage
- Resource reuse
- Faster system response
- New means of resource allocation
- Unified connection management , Avoid database connection leaks
Excellent open source database connection pool agent
(1)DBCP yes Apache Database connection pool provided .tomcat The server comes with dbcp Database connection pool . Speed is relative to c3p0 Faster , But because of its own existence BUG,Hibernate3 Support is no longer available .
(2)C3P0 It is a database connection pool provided by an open source organization , Relatively slow , Stability is OK ,hibernate Official recommendation .
(3)Proxool yes sourceforge The next open source project database connection pool , It has the function of monitoring connection pool status , More stable c3p0 almost .
(4)BoneCP Is a database connection pool provided by an open source organization , Fast .
(5)Druid It is the database connection pool provided by Ali , It's said to be a collection DBCP 、C3P0 、Proxool All in one database connection pool , But the speed is not sure if there is BoneCP fast .
边栏推荐
- Miscellaneous things that don't miss the right business
- gslb(global server load balance)技術的一點理解
- Station B, dark horse programmer, employee management system, access conflict related (there is an unhandled exception at 0x00007ff633a4c54d (in employee management system.Exe): 0xc0000005: read locat
- treevalue——Master Nested Data Like Tensor
- The latest analysis of crane driver (limited to bridge crane) in 2022 and the test questions and analysis of crane driver (limited to bridge crane)
- Redis concludes that the second pipeline publishes / subscribes to bloom filter redis as a database and caches RDB AOF redis configuration files
- Report on the current situation and development trend of ethoxylated sodium alkyl sulfate industry in the world and China Ⓞ 2022 ~ 2027
- Teach you how to install aidlux (1 installation)
- [dynamic programming] Ji Suan Ke: Suan tou Jun breaks through the barrier (variant of the longest increasing subsequence)
- JS demo calculate how many days are left in this year
猜你喜欢
Morning flowers and evening flowers
QGIS grid processing DEM data reclassification
The latest analysis of crane driver (limited to bridge crane) in 2022 and the test questions and analysis of crane driver (limited to bridge crane)
Dahua series books
What is the difference between res.send() and res.end() in the node express framework
常用sql集合
常用sql集合
MySQL - idea connects to MySQL
2022 safety officer-a certificate registration examination and summary of safety officer-a certificate examination
pivot ROP Emporium
随机推荐
Investment analysis and prospect trend prediction report of China's boron nitride industry Ⓨ 2022 ~ 2028
Remember the experience of automatically jumping to spinach station when the home page was tampered with
Exclusive interview with the person in charge of openkruise: to what extent has cloud native application automation developed now?
使用dnSpy对无源码EXE或DLL进行反编译并且修改
[secretly kill little partner pytorch20 days] - [day3] - [example of text data modeling process]
Collections SQL communes
TiDB 之 TiCDC6.0 初体验
Blue Bridge Cup Guoxin Changtian single chip microcomputer -- led lamp module (V)
pivot ROP Emporium
Solve the problem that openocd fails to burn STM32 and cannot connect through SWD
Cesium terrain clipping draw polygon clipping
Farmersworld farmers world, no faith, how to talk about success?
Awk getting started to proficient series - awk quick start
Décompiler et modifier un exe ou une DLL non source en utilisant dnspy
Imitation Netease cloud music applet
Compréhension de la technologie gslb (Global Server load balance)
仿网易云音乐小程序
Persistence of Nacos
Functions and differences between static and Const
Oil monkey plug-in