Java多线程的使用状况简析

Java多线程我的以为须要进行并发处理时使用,例如服务器须要同时接受多个客户端链接,且有无需实时等待的服务处理。比方说咱们系统中短信发送任务,上万条信息的发送咱们没必要等待,只需次日查看发送结果便可。
具体的使用状况能够分为以下几类:
一、程序包含复杂的计算任务时
主要是利用多线程获取更多的CPU时间(资源)。
方法一,把一个任务分解为多个能够子任务。
由于总有些子任务是能够并发的,多个子任务并发执行了极可能避免CPU须要IO操做的完成,并且可以提升系统的吞吐量。缓存


方法二,缓存多线程的共享数据。
当你已经在使用多线程,不少时候必须使用共享数据。若是,数据是只读的,那么能够在第一次获取后保存起来,之后就能够重复使用了。可是,第一次的获取仍是没法避免的须要线程同步操做的。
方法三,若是线程数目有限,就不要共享数据。
作法是为每个线程实例化一个单独的数据,其实就是为每个线程分配一块数据使用。这样没有线程同步操做了,速度能够尽量的提示。
方法四,若是没办法肯定线程数目到底有多少,那么使用部分共享吧。
部分共享其实就是使用多个资源池代替一个资源池,资源池的数目得更加经验来肯定。
二、处理速度较慢的外围设备
好比链接多台打印机,再好比网络程序,涉及数据包的收发,时间因素不定。使用独立的线程处理这些任务,可以使程序无需专门等待结果。
三、程序设计自身的须要
操做系统是基于消息循环的抢占式多任务系统,为使消息循环系统不至于阻塞,程序须要多个线程的来共同完成某些任务。下面尚学堂陈老师给你们提供两个简单的例子加以说明。服务器

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(); 
    } 
}
相关文章
相关标签/搜索