全是用自己的理解写的:
1、内存碎片:如果对内存反复的申请、释放,就会有一些小的不连续的内存永远得不到使用,多了就成为内存碎片了。
2、死锁:线程1用着A资源,想占用B资源;此时,如果线程2正在用着B资源,却想占用A资源。这种情况谁也不同意,互掐,结果谁也进行不下去,死锁了。
所以,在lock()锁线程时,嵌套一定要注意,比如:
lock(A)
{
lock(B)
}
同时
lock(B)
{
lock(A)
}
这种情况就很可能出现死锁的情况,多线程要小心。
3、线程池:线程池就是为多线程服务的,一个线程池里面可以包含多个线程,线程池会提前为线程申请内存空间,到使用的时候不用重新申请,效率会比较高。
就好比一个公司:业务多的时候用100人,业务少的时候只用60人,但是即便40人我没用到,我暂时也不解雇他们,等到业务多了直接重新让他们干活,而不是重新雇新人。