C# 多线程
多线程:
进程可以包括若干个线程,同时创建多个线程来完成某项任务,就可以称之为多线程
进程:
系统进行资源分配和调度的基本单位,是操作系统结构的基础
线程:
操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位
程序开多少线程合适?
2N + 1
多线程之间是如何通信的?
通过共享变量,变量需要volatile 修饰
使用wait()和notifyAll()方法,但是由于需要使用同一把锁,所以必须通知线程释放锁,被通知线程才能获取到锁,这样导致通知不及时
多线程有什么优势?
发挥多核CPU 的优势
防止阻塞
启动线程方法 start()和 run()有什么区别?
只有调用了 start()方法,才会表现出多线程的特性,不同线程的 run()方法里面的代码交替执行。如果只是调用 run()方法,那么代码还是同步执行的,
必须等待一个线程的 run()方法里面的代码全部执行完毕之后,另外一个线程才可以执行其 run()方法里面的代码。
线程中的 wait()和 sleep()方法有什么区别?
sleep 方法和 wait 方法都可以用来放弃 CPU 一定的时间,不同点在于如果线程持有某个对象的监视器,
sleep 方法不会放弃这个对象的监视器,wait方法会放弃这个对象的监视器
多线程同步有哪几种方法?
Synchronized 关键字,Lock 锁实现,分布式锁等
为什么要使用线程池?
线程池中的线程复用极大节省了系统资源,当线程一段时间不再有任务处理时它也会自动销毁,而不会长驻内存
加班?
如果出现加班的情况,我首先会反思加班的原因是否出在我个人的身上。是不是因为工作能力不足或者工作效率低,
才导致需要后期加班才能够补上?如果是,我会尽量去补上自己在工作上的不足,提高工作的效率,减少加班情况的发生。