课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在上文中给大家简单介绍了java编程开发中进程与线程的区别等内容,而今天我们就在来了解一下,java多线程的创建都有哪些方法。
1、继承Thread类;
定义一个类,继承Thread,并复写run()方法,对于run方法来说就是实现我们自己的业务代码。
实例化自己创建的类的对象,调用start()方法(这里必须调用start方法才算是真正的启动线程)
这个执行结果大家可以去运行尝试一下,有以下r注意点:
我们在程序里面调用了start(方法后,虚拟机会先为我们创建一个线程,然后等到这个线程一次得到时间片时再调用run()方法。
注意不可多次调用start(方法。在一次调用start()方法后,再次调用start()方法会抛出异常。
2、实现Runnable接口
定义一个自己的类,实现接口Runnable,并复写run()方法。
创建MyRunnable实例myRunnable,以myRunnable作为target创建Thead对象,该Thread对象才是真正的线程对象
调用线程对象的start()方法
3、实现Callable接口
创建实现Callable接口的类myCallable
以myCallable为参数创建FutureTask对象
将FutureTask作为参数创建Thread对象
调用线程对象的start()方法
4、使用线程池
Executors提供了一系列工厂方法用于创先线程池,返回的线程池都实现了ExecutorService接口。
5、Thread类与Runnable接口的比较:
实现一个自定义的线程类,可以有继承Thread类或者实现Runnable接口这两种方式,它们之间有什么优劣呢?
由于Java"单继承,多实现"的特性,Runnable接口使用起来比Thread更灵活。
Runnable接口出现更符合面向对象,将线程单独进行对象的封装。
Runnable接口出现,降低了线程对象和线程任务的耦合性
如果使用线程时不需要使用Thread类的诸多方法,显然使用Runnable接口更为轻量。
所以,我们通常优先使用“实现Runnable接口”这种方式来自定义线程类。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。