記憶體池:
1.建立乙個結構體管理記憶體池。
2.過載new和delete操作符
3.執行new時,「先執行過載new操作符函式」,再執行「建構函式」!!
4.執行delete時,「先執行虛構函式」,再執行「過載delete操作符函式」
**:
struct st_memorypool
~st_memorypool()
}void usingsize(int n)
pusestart = pusestart + n;
usesize += n;
}void* operator new(size_t size)
cout << "new分配記憶體: " << sizeof(st_memorypool) * sizeof(char) << endl;
return (void*)malloc(sizeof(st_memorypool) * sizeof(char));
}void operator delete(void* st)
free(st);
st = null;
cout << "delete釋放結構體內存 " << endl;
}int main()
{ st_memorypool* st_mp = new st_memorypool(1024);
cout << 「st_mp.totalsize: 」 << st_mp->totalsize << endl;
int* a = (int*)(st_mp-> pusestart);
*a = 200;
st_mp->usingsize(100);
float* b = (float*)(st_mp->pusestart);
*b = 1000;
st_mp->usingsize(300);
double* c = (double*)(st_mp->pusestart);
*c = 1500;
st_mp->usingsize(600);
int* aa = (int*)(st_mp->pstart);
cout << "aa: " << *aa << endl;
float* bb = (float*)(st_mp->pstart+100);
cout << "bb: " << *bb << endl;
double* cc = (double*)(st_mp->pstart + 100+300);
cout << "cc: " << *cc << endl;
delete st_mp;
system("pause");
return 0;
執行結果:
自定義執行緒池
有些時候 jdk自帶的cachedthreadpool fixedthreadpool等執行緒池完成不了我們業務的需求時 可以用threadpoolexecutorg構造自定義的執行緒池。public class usethreadpoolexecutor1 這段 會首先執行任務1,然後把2 3 4...
自定義執行緒池
建立執行緒池方法 儘管executors提供了四種執行緒池建立的方式,但為了實現某些特定的需求,可以自己建立執行緒池。如在阿里的程式設計規範使用executors建立執行緒時,一般會報錯,並提示以下資訊 執行緒池不允許使用executors去建立,而是通過threadpoolexecutor的方式,...
自定義執行緒池
自定義執行緒池建立api 執行緒池建立通過juc的介面 executor 實現,平時我們使用其實現類 threadpoolexecutor 實現自定義執行緒池。常用建構函式 public threadpoolexecutor int corepoolsize,int maximumpoolsize,...