博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程的创建方式
阅读量:3891 次
发布时间:2019-05-23

本文共 2147 字,大约阅读时间需要 7 分钟。

一、继承Thread

1、创建类继承Thread

2、重写类的run方法

3、调用时创建实例对象然后调用start方法

举例:

class MyThread extends Thread{    @Override    public void run() {        for(int i=0;i<10;i++){            System.out.println("老王,要被打死");        }    }}public class Demo {    public static void main(String[] args) {        MyThread myThread = new MyThread();        myThread.start();        System.out.println("复活啦");    }}

二、实现Runnable接口

1、让类实现Runnable接口

2、重写run方法

3、调用时实现实例对象

4、创建一个Thread对象,把示例对象当做参数传给示例对象

5、调用Thread实例对象的start方法

class MyRunnable implements Runnable{    @Override    public void run() {        for(int i=0;i<10;i++){            System.out.println(Thread.currentThread().getName()+"---------转世"+i);        }    }}public class Demo1 {    public static void main(String[] args) {        MyRunnable myRunnable = new MyRunnable();        MyRunnable myRunnable1 = new MyRunnable();        Thread thread = new Thread(myRunnable,"老铁");        Thread thread1 = new Thread(myRunnable1,"隔壁老王");        thread.start();        thread1.start();        System.out.println("完啦");    }}

三、实现Callable接口

1、实现Callable接口,有返回值类型

2、重写call方法

3、创建实现类的实例对象

4、 创建FutureTask实例对象,并把实例对象当做参数传给FutureTask对象

5、创建Thread对象,把FutureTask实例当做参数传给Thread

6、调用thread实例的start方法

class demoThread implements Callable
{ @Override public Integer call() throws Exception { int n = 100; return Integer.valueOf(n); }}public static void main(String[] args) { demoThread th= new demoThread (); FutureTask
task = new FutureTask<>(th); Thread thread = new Thread(task); thread.start(); System.out.println(" n :" + task.get());}

四、线程池获取

1、创建Thread对象并且重写run方法

2、使用执行器获取executors获取线程池

3、调用executors的execute方法,并把thread示例对象当做参数传入

class MyRunnable implements Runnable{    @Override    public void run() {     System.out.println(Thread.currentThread().getName()+"---------执行");    }}public static void main(String[] args) {    ExecutorService executorService = Executors.newCachedThreadPool();    executorService.execute(new MyRunnable ());}

>>>一般常用的线程池有以下两种:

1、newCachedThreadPool:创建一个可缓存的线程池,超出长度当有空闲线程的时候回收,没有的时候创建

2、newFixedThreadPoo:创建一个定长的线程池,固定的长度,当超出长度的时候,线程在队列中等待

转载地址:http://fpahn.baihongyu.com/

你可能感兴趣的文章
使用NTP服务器完美解决VMware Linux时间无法同步问题
查看>>
机器学习笔记(3)---K-近邻算法(1)---约会对象魅力程度分类
查看>>
机器学习笔记(4)---K-近邻算法(2)---使用sklearn中的KNN算法
查看>>
数据结构——外部排序
查看>>
UNIX网络编程——System V 消息队列
查看>>
信号量、互斥锁,读写锁和条件变量的区别
查看>>
UNIX网络编程——Posix共享内存区和System V共享内存区
查看>>
js循环语句
查看>>
js中时钟的写法
查看>>
js事件冒泡
查看>>
Django模型中的字段类型和字段约束
查看>>
京东金融曹鹏:通过JDD大赛,实现“比你更懂你”的极致价值,让金融更简单,更平等
查看>>
HTML我的家乡杭州网页设计作业源码(div+css)~ HTML+CSS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计 ~HTML期末大作业
查看>>
HTML网页设计期末课程大作业~动漫樱桃小丸子5页表格div+css学生网页设计作业源码
查看>>
HTML学生网页设计作业成品~化妆品官方网站设计与实现(HTML+CSS+JS)共8个页面
查看>>
web课程设计网页规划与设计~在线阅读小说网页共6个页面(HTML+CSS+JavaScript+Bootstrap)
查看>>
HTML期末大作业~棋牌游戏静态网站(6个页面) HTML+CSS+JavaScript
查看>>
XmlValidationModeDetector源码分析
查看>>
解析 xml 为Document
查看>>
中国银行2013年校园招聘机试回忆录(综合部分专业题 考点)
查看>>