首页 > 编程知识 正文

线程太多有什么缺点(为什么要使用多线程?多线程的优点和缺点是什么?)

时间:2023-05-05 02:14:41 阅读:122081 作者:718

首先谈谈多线程出现的原因吧:

为了解决负荷分散的问题,充分利用CPU资源。 为了提高CPU的使用率,采用相互不干扰地同时进行多个事情的多线程方式。 处理和处理大量I/o操作(如读写:文件、捕获、处理、显示和存储视频图像)需要大量时间

多线程的好处:

1 .线程使您可以在后台处理程序中耗时的任务

2 .用户界面更有吸引力,例如,当用户单击按钮以触发处理某个事件时,进度条可以弹出来显示处理进度

3 .方案执行效率可能会提高

4 .线程对于实现一些等待的任务(如输入用户、读取文件和发送/接收网络数据)相对有用。

多线程缺点:

1 .如果有大量线程,操作系统需要在它们之间切换,因此会影响性能。

2 .更多线程需要更多的内存空间

3 .线程中止需要考虑对程序执行的影响。

4 .块模型数据通常在多个线程之间共享,并且需要防止线程死锁的发生

第三部分---------------Java中的线程------------------

1、什么是进程?

答案:进程其实就是一个静态的概念。在机器上实际上运行的都是线程(线程,进程的一部分。)

2、什么是线程?

答案:线程是一个程序内部的顺序控制流。一个进程里面有一个主方法叫main方法。是一个进程里面不同的执行路径。

3、什么时候会用到线程?

答案:当系统中或者开发中。遇到高并发 并行的情况下为了解决负载均衡的问题,就会使用到线程。线程可以提高cpu的利用率。

4、在一个时间点上。Cpu只能支持一个线程的运行(由于windows在一个进程中将多个线程执行速度非常的快。所以好多人认为是那是多线程。其实在同一个时间点上只有一个线程在运行)。

5、注意:真正的多线程就是妩媚的羽毛的机器为双cpu或者是双核的。那么这个时候确实是真正的多线程在运行。

6、Java的线程是通过java.long.thread类来实现的。

7、一个新的线程需要两步来执行@创建线程@启动线程

8、如何创建一个新的新的线程呢?

答案:Thread t=new Thread();每创建一个新的thread对象就相当于创建了一个新的线程。

A)Thread里面一个特殊的方法run();这个方法就是为执行一个线程而做准备的(妩媚的羽毛创建了一个新的线程以后,所有实现的业务逻辑全部在run()方法里面),也就是说在run()方法里面写啥业务。线程就执行实现啥业务。

B)启动一个线程用start()方法,也就是说当调用Start()方法线程准备就绪以后。才能去启动执行run()方法里面的所有业务逻辑。、

C)总结:进程有独立的运行内存和空间。而线程是进程的一个执行单元。相同的线程是共享内存空间的。所以进程运行上对内存的开销比较大。而线程比较节省内存。

D) Therad线程类提供了好多方法。最常用的有sleep()方法,调用此方法是让一个线程处于睡眠状态。它是Thread类的一个静态方法。

E)注意:sleep()在使用过程中会抛出异常。当在处理异常的时候用try{}catch{}。当重写的方法无法用throws来处理异常时。就必须用try{}catch{}来处理异常。

F)如何结束一个线程?调用方法shutDown()方法。可以定义一个变量。比如:boolean flag=true;将变量变为false不就停止了吗?

G) Thread类的join()方法——合并某个线程。

H) Yield()方法,让出cpu让其他线程执行的机会。

I)线程的优先级:setPriority();用此方法就是设置线程的优先级。

9、线程同步:多个线程同时访问同一资源时。线程与线程之间协调的这一过程就叫做线程同步。

A)synchronized()方法,指同步方法的意思。锁定线程。同步方法实际就是在执行方法的时候当前的对象呗锁定。(锁定方法实际就是锁定了当前方法的对象。必须等当前线程执行完才能执行下一个线程),线程的同步也就是使线程处于安全化状态。

B) 线程的死锁:两个线程相互等待的状态就形成了死锁。

C)如何解决死锁:减小锁的粒度

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。