当前位置:网站首页>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 :
 Refusal strategy  Implementation steps

Thread pool details

Database connection pool

advantage

  • Resource reuse
  • Faster system response
  • New means of resource allocation
  • Unified connection management , Avoid database connection leaks

Reference resources 1

Reference resources 2

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 .

原网站

版权声明
本文为[ZJH'blog]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202142237232152.html