Java知识梳理——线程实现/创建方式
2019-09-02 16:10
46 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38905818/article/details/100293519
方法1:Thead
Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过 Thread 类的 start()实例方法。start()方法是一个 native 方法,它将启动一个新线程,并执行 run()方法。
[code]public class Main extends Thread{ public static void main(String[] args) { Main myThead=new Main(); myThead.start(); } public void run(){ System.out.println("start thread"); } }
方法2:Runnable
如果自己的类已经 extends 另一个类,就无法直接 extends Thread,此时,可以实现一个Runnable 接口。
[code]public class Main implements Runnable{ public static void main(String[] args) { Main myThead=new Main(); Thread thread=new Thread(myThead); thread.start(); } public void run(){ System.out.println("start thread"); } }
方法3:Callable
有返回值的任务必须实现 Callable 接口,类似的,无返回值的任务必须 Runnable 接口。执行Callable 任务后,可以获取一个 Future 的对象,在该对象上调用 get 就可以获取到 Callable 任务 返回的 Object 了。
Callable所依赖的FutureTask类保存了call方法的返回值,可以用get方法获取。
[code]import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class Main implements Callable<Integer> { public static void main(String[] args) throws Exception { Main myThead=new Main(); FutureTask futureTask=new FutureTask(myThead); Thread thread=new Thread(futureTask); thread.start(); System.out.println(futureTask.get()); } public Integer call(){ return 1; } }
方法4:线程池
线程和数据库连接这些资源都是非常宝贵的资源。那么每次需要的时候创建,不需要的时候销 毁,是非常浪费资源的。那么我们就可以使用缓存的策略,也就是使用线程池。
基本的线程池有:(1)newFixedThreadPool(2)newSingleThreadExecutor(3)newCachedThreadPool (4)newScheduledThreadPool
[code]import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Main { public static void main(String[] args) throws Exception { ExecutorService pool=Executors.newFixedThreadPool(10); for(int i=0;i<5;i++) { Runnable r=new Runnable() { @Override public void run() { Thread thread=new Thread(); System.out.println(thread.getName()); } }; pool.execute(r); } pool.shutdown(); } }
相关文章推荐
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- java创建线程的三种实现方式
- Java核心内库-线程-通过实现Runnable接口的方式创建并启动线程
- java基础知识回顾之java Thread类--java线程实现常见的两种方式(一)
- Java多线程:创建线程的两种实现方式
- 【JAVA多线程01】JAVA线程实现/创建方式
- Java并发学习之四种线程创建方式的实现与对比
- 实现Java线程创建方式
- java创建线程的第二种方式:实现Runnable接口
- 创建java线程方式之三实现Callable接口
- Java创建线程的四种实现方式
- Java【多线程知识总结(4)】通过实现Runnable接口创建线程
- Java【多线程知识总结(4)】通过实现Runnable接口创建线程
- java多线程 -- 创建线程的第三者方式 实现Callable接口
- java线程基础知识 --创建线程的三种方式
- java基础知识回顾之java Thread类--java线程实现常见的两种方式实现Runnable接口(二)
- java多线程学习1-继承Thread类和实现Runnable接口来创建线程
- 黑马程序员之Java---线程创建方式