TRA-1

Tips

限制网速可以让某个下载线程sleep

Review

线程池的主要参数
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
Executors.defaultThreadFactory(), defaultHandler);
}
1、corePoolSize(线程池基本大小):当向线程池提交一个任务时,若线程池已创建的线程数小于corePoolSize,即便此时存在空闲线程,也会通过创建一个新线程来执行该任务,直到已创建的线程数大于或等于corePoolSize时,(除了利用提交新任务来创建和启动线程(按需构造),也可以通过 prestartCoreThread() 或 prestartAllCoreThreads() 方法来提前启动线程池中的基本线程。)

2、maximumPoolSize(线程池最大大小):线程池所允许的最大线程个数。当队列满了,且已创建的线程数小于maximumPoolSize,则线程池会创建新的线程来执行任务。另外,对于无界队列,可忽略该参数。

3、keepAliveTime(线程存活保持时间)当线程池中线程数大于核心线程数时,线程的空闲时间如果超过线程存活时间,那么这个线程就会被销毁,直到线程池中的线程数小于等于核心线程数。

4、workQueue(任务队列):用于传输和保存等待执行任务的阻塞队列。

5、threadFactory(线程工厂):用于创建新线程。threadFactory创建的线程也是采用new Thread()方式,threadFactory创建的线程名都具有统一的风格:pool-m-thread-n(m为线程池的编号,n为线程池内的线程编号)。

5、handler(线程饱和策略):当线程池和队列都满了,再加入线程会执行此策略。

Algorithm

括号序列

class Solution {

public bool` `isValid(string s) {`

stack<char>st;`

for(int i=0;i<s.size();i++)`{

`if``(s[i]==``'('``||s[i]==``'['``||s[i]==``'{'``)`

`st.push(s[i]);`
else`

`{`

`if``(st.empty())`

`return` `false``;`

`else`

`{`

`if``(s[i]==``')'``&&st.top()==``'('``)`

`st.pop();`

`else` `if``(s[i]==``']'``&&st.top()==``'['``)`

`st.pop();`

`else` `if``(s[i]==``'}'``&&st.top()==``'{'``)`

`st.pop();}

`}`

`}`

`if``(st.empty())`

`return` `true``;`

`else` 

`return` `false``;`

`}`

`};`
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章