美文网首页
Java多线程的使用情况简析

Java多线程的使用情况简析

作者: 值得一看的喵 | 来源:发表于2017-09-18 15:09 被阅读0次

    Java多线程个人觉得需要进行并发处理时使用,例如服务器需要同时接受多个客户端连接,且有无需实时等待的服务处理。比方说我们系统中短信发送任务,上万条信息的发送我们不必等待,只需第二天查看发送结果即可。

    具体的使用情况可以分为如下几类:

    1、程序包含复杂的计算任务时

    主要是利用多线程获取更多的CPU时间(资源)。

    方法一,把一个任务分解为多个可以子任务。

    因为总有些子任务是可以并发的,多个子任务并发执行了很可能避免CPU需要IO操作的完成,而且能够提高系统的吞吐量。

    方法二,缓存多线程的共享数据。

    当你已经在使用多线程,很多时候必须使用共享数据。如果,数据是只读的,那么可以在第一次获取后保存起来,以后就可以重复使用了。但是,第一次的获取还是无法避免的需要线程同步操作的。

    方法三,如果线程数目有限,就不要共享数据。

    做法是为每一个线程实例化一个单独的数据,其实就是为每一个线程分配一块数据使用。这样没有线程同步操作了,速度可以尽可能的提示。

    方法四,如果没办法确定线程数目到底有多少,那么使用部分共享吧。

    部分共享其实就是使用多个资源池代替一个资源池,资源池的数目得更加经验来确定。

    2、处理速度较慢的外围设备

    比如连接多台打印机,再比如网络程序,涉及数据包的收发,时间因素不定。使用独立的线程处理这些任务,可使程序无需专门等待结果。

    3、程序设计自身的需要

    操作系统是基于消息循环的抢占式多任务系统,为使消息循环系统不至于阻塞,程序需要多个线程的来共同完成某些任务。

    Java多线程简单小例子——实现Runnable接口:

    /**

    * 实现Runnable接口的类

    *

    * @author

    */

    public class DoSomething implements Runnable {

    private String name;

    public DoSomething(String name) {

    this.name = name;

    }

    public void run() {

    for (int i = 0; i < 5; i++) {

    for (long k = 0; k < 100000000; k++) ;

    System.out.println(name + ": " + i);

    }

    }

    }

    /**

    * 测试Runnable类实现的多线程程序

    *

    * @author

    */

    public class TestRunnable {

    public static void main(String[] args) {

    DoSomething ds1 = new DoSomething("张三");

    DoSomething ds2 = new DoSomething("李四");

    Thread t1 = new Thread(ds1);

    Thread t2 = new Thread(ds2);

    t1.start();

    t2.start();

    }

    }

    相关文章

      网友评论

          本文标题:Java多线程的使用情况简析

          本文链接:https://www.haomeiwen.com/subject/vxrbsxtx.html