1. 充分利用C
PU资源       现在世界上大多数计算机只有一块C
PU.因此,充分利用C
PU资源显得尤为重要。当执行单线程程序时,由于在程序发生阻塞时C
PU可能会处于空闲状态。这将造成大量的计算资源的浪费。而在程序中使用多线程可以在某一个线程处于休眠或阻塞时,而C
PU又恰好处于空闲状态时来运行其他的线程。这样C
PU就很难有空闲的时候。因此,C
PU资源就得到了充分地利用。    2. 简化编程模型       如果程序只完成一项任务,那只要写一个单线程的程序,并且按着执行这个任务的步骤编写代码即可。但要完成多项任务,如果还使用单线程的话,那就得在在程序中判断每项任务是否应该执行以及什么时候执行。如显示一个时钟的时、分、秒三个指针。使用单线程就得在循环中逐一判断这三个指针的转动时间和角度。如果使用三个线程分另来处理这三个指针的显示,那么对于每个线程来说就是指行一个单独的任务。这样有助于开发人员对程序的理解和维护。    3. 简化异步事件的处理       当一个服务器应用程序在接收不同的客户端连接时最简单地处理方法就是为每一个客户端连接建立一个线程。然后监听线程仍然负责监听来自客户端的请求。如果这种应用程序采用单线程来处理,当监听线程接收到一个客户端请求后,开始读取客户端发来的数据,在读完数据后,read方法处于阻塞状态,也就是说,这个线程将无法再监听客户端请求了。而要想在单线程中处理多个客户端请求,就必须使用非阻塞的Socket连接和异步I/O.但使用异步I/O方式比使用同步I/O更难以控制,也更容易出错。因此,使用多线程和同步I/O可以更容易地处理类似于多请求的异步事件。    4. 使G
UI更有效率       使用单线程来处理G
UI事件时,必须使用循环来对随时可能发生的G
UI事件进行扫描,在循环内部除了扫描G
UI事件外,还得来执行其他的程序代码。如果这些代码太长,那么G
UI事件就会被“冻结”,直到这些代码被执行完为止。       在现代的G
UI框架(如SWING
、A
WT和SWT)中都使用了一个单独的事件分派线程(event dispatch thread,E
D
T)来对G
UI事件进行扫描。当我们按下一个按钮时,按钮的单击事件函数会在这个事件分派线程中被调用。由于E
D
T的任务只是对G
UI事件进行扫描,因此,这种方式对事件的反映是非常快的。    5. 节约成本       提高程序的执行效率一般有三种方法:      (1)增加计算机的C
PU个数。      (2)为一个程序启动多个进程      (3)在程序中使用多进程。       第一种方法是最容易做到的,但同时也是最昂贵的。这种方法不需要修改程序,从理论上说,任何程序都可以使用这种方法来提高执行效率。第二种方法虽然不用购买新的硬件,但这种方式不容易共享数据,如果这个程序要完成的任务需要必须要共享数据的话,这种方式就不太方便,而且启动多个线程会消耗大量的系统资源。第三种方法恰好弥补了第一种方法的缺点,而又继承了它们的优点。也就是说,既不需要购买C
PU,也不会因为启太多的线程而占用大量的系统资源(在默认情况下,一个线程所占的内存空间要远比一个进程所占的内存空间小得多),并且多线程可以模拟多块C
PU的运行方式,因此,使用多线程是提高程序执行效率的最廉价的方式。

java多线程的好处?

参考答案与解析:

相关试题

在Java中允许创建多线程应用程序的接口是()。

[单选题]在Java中允许创建多线程应用程序的接口是()。A . ThreadableB . RunnableC . ClonableD . 以上均不是

  • 查看答案
  • 下列关于Java多线程并发控制机制的叙述中,错误的是

    [单选题]下列关于Java多线程并发控制机制的叙述中,错误的是A.Java中对共享数据操作的并发控制是采用加锁技术B.线程之间的交互,提倡采用suspend()/resume()方法C.共享数据的访问权限都必须定义为privateD.Java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生

  • 查看答案
  • 下列关于Java多线程并发控制机制的叙述中,错误的是()。

    [单选题]下列关于Java多线程并发控制机制的叙述中,错误的是( )。A.Java中对共享数据操作的并发控制是采用加锁技术B.线程之间的交互,提倡采用suspend()/resume()方法C.共享数据的访问权限都必须定义为pdvateD.Java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生

  • 查看答案
  • 下列关于Java多线程并发控制机制的叙述中,错误的是( )。

    [单选题]下列关于Java多线程并发控制机制的叙述中,错误的是( )。A.Java中对共享数据操作的并发控制采用加锁技术B.线程之间的交互,提倡采用suspend()/resume()方法C.共享数据的访问权限都必须定义为privateD.Java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生

  • 查看答案
  • 多线程终止?

    [主观题]多线程终止?

  • 查看答案
  • 将多线程的java程序移植到java平台上的时候会有什么区别呢??需要做哪些改动

    [主观题]将多线程的java程序移植到java平台上的时候会有什么区别呢??需要做哪些改动呢??eclipse下的java工程时可以正常运行,但转为android工程后就无法正常运行,出现这种情况一般会有哪些原因??因为代码超出字数限制,没法上传。程序是利用nio类实现客户服务器端连接的,其中收发数据部分为两个子线程,收发数据为按键触发事件。java下可以正常收发,但转为androidproject后只能连上,收发都没了····

  • 查看答案
  • 多线程技术是什么?

    [主观题]多线程技术是什么?

  • 查看答案
  • Java 程序的并发机制是A )多线程 B )多接口 C )多平台 D )多态性

    [单选题]Java 程序的并发机制是A. )多线程B. )多接口C. )多平台D. )多态性

  • 查看答案
  • Java多线程并发控制中,用于在代码中标识临界区的关键字是(  )。

    [单选题]Java多线程并发控制中,用于在代码中标识临界区的关键字是(  )。A.startB.waitC.synchronizedD.lock

  • 查看答案
  • Java多线程并发控制中,用于在代码中标识临界区的关键字是(  )。

    [单选题]Java多线程并发控制中,用于在代码中标识临界区的关键字是(  )。A.startB.waitC.synchronizedD.lock

  • 查看答案
  • java多线程的好处?