介绍

多线程主要的作用就是充分利用cpu的资源。单线程处理,在文件的加载的过程中,处理器就会一直处于空闲,但也被加入到总执行时间之内,串行执行切分总时间,等于每切分一个时间*切分后字符串的个数,执行程序,估计等几分钟能处理完就不错了。而多线程处理,文件加载与差分过程中

一、java实现多线程的三种方式

1.继承thread

通过thread继承,并重写run方法来实现多线程,案例如下:

public class threadpattern extends thread {
    @override
    public void run() {
        system.out.println("继承thread当前执行线程"+thread.currentthread().getname());
    }
}
// 测试
public void threadtest() throws executionexception, interruptedexception {
        threadpattern pattern = new threadpattern();
        pattern.start();
    }

2.实现runnable接口

runable的实现类作为thread的构造参数,来实现多线程,案例如下:

public class runnablepattern implements runnable{
    @override
    public void run() {
        system.out.println("实现runnable方式,当前执行线程"+thread.currentthread().getname());
    }
}
// 测试
public void runnabletest() throws executionexception, interruptedexception {
        runnablepattern runnablepattern = new runnablepattern();
        thread thread = new thread(runnablepattern);
        thread.start();
    }

3.实现callable接口

实现callable接口重写call()方法,然后包装成futuretask,然后再包装成thread,其实本质都是实现runnable 接口。案例如下:

public class callablepattern  implements callable {
    @override
    public object call() throws exception {
        system.out.println("实现callable方式,当前执行线程"+thread.currentthread().getname());
        return "1";
    }
}
// 测试
public void callabletest() throws executionexception, interruptedexception {
        callablepattern callablepattern = new callablepattern();
        futuretask<string> futuretask = new futuretask<>(callablepattern);
        new thread(futuretask).start();
    }

二、总结对三种使用方式的对比

1、thread:继承的方式,由于java的单一继承机制。就无法继承其他类,使用起来就不够灵活。

2、runnable:实现接口,比thread类更加的灵活,没有单一继承的限制。

3、callable:thread和runnable都重写run方法并且没有返回值,callable是重写call()方法并且有返回值,借助futuretask类来判断线程是否执行完毕或者取消线程执行, 一般情况下不直接把线程体的代码放在thread类中,一般通过thread类来启动线程。

4:thread类实现runnable ,callable封装成futuretask,futuretask实现runnablefuture,runnablefuture实现runnable,所以callable也算是一种runnable,所以实现的方式本质都是runnable实现。

到此这篇关于java中线程thread的三种方式和对比的文章就介绍到这了,更多相关java 线程thread内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!