java_线程创建的三种方式及区别
java中关于线程的创建有三种: (1)通过继承Thread类创建线程.
(2)通过实现Runnable接口创建线程.
(3)通过Callable 和 Future 接口创建线程.
* * * * * * * * * * * * * * * * * * * * * * * * * 继承Thread类创建线程 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1)重写run()方法, 该方法的方法体是线程需要执行的任务;
2)启动线程, 调用start();
代码 :
1 package demo;
2
3 public class TestThread{
4
5 public static void main(String[] args) {
6 Thread thread = new MyThread();
7 thread.start();
8 }
9 }
10
11 class MyThread extends Thread{
12
13 public void run() {
14 try {
15 System.out.println("稍等下!");
16 sleep(5000);
17 System.out.println(getName()+"执行了!");
18 } catch (InterruptedException e) {
19 e.printStackTrace();
20 }
21 }
22 }
* * * * * * * * * * * * * * * * * * * * * * * * * 实现Runnable接口创建线程 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1. 覆盖接口中run()方法, 该方法的方法体是线程需要执行的任务;
2. 通过实现Thread类的构造函数Thread(Runnable target)或Thread(Runnable target, String name)来创建Thread实例, 这样就创建一个完整的线程对象;
3. 启动线程, 调用start();
代码 :
1 package demo;
2
3 public class TestRunnable{
4
5 public static void main(String[] args) {
6 Thread thread=new Thread(new MyThread2());
7 Thread thread1=new Thread(new MyThread2());
8 thread.start();
9 thread1.start();
10 }
11 }
12
13 class MyThread2 implements Runnable{
14
15 public void run() {
16 try {
17 System.out.println("稍等下!");
18 Thread.sleep(500);
19 for(int i=0;i<100;i++){
20 System.out.println(Thread.currentThread().getName()+"线程的"+i+"执行了!");
21 }
22 } catch (InterruptedException e) {
23 e.printStackTrace();
24 }
25 }
26 }
* * * * * * * * * * * * * * * * * * * * * * * 实现Callable接口与Future接口创建线程 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
继承类与实现接口的区别 ?
1. 将线程的任务从线程的子类中分离出来, 进行单独的封装, 按照面向对象的思想将任务封装为对象.
2. 避免java单继承的局限性.
java_线程创建的三种方式及区别的更多相关文章
- java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService
前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...
- java核心知识点----创建线程的第三种方式 Callable 和 Future CompletionService
前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...
- Java实现线程的三种方式和区别
Java实现线程的三种方式和区别 Java实现线程的三种方式: 继承Thread 实现Runnable接口 实现Callable接口 区别: 第一种方式继承Thread就不能继承其他类了,后面两种可以 ...
- IOS 多线程,线程同步的三种方式
本文主要是讲述 IOS 多线程,线程同步的三种方式,更多IOS技术知识,请登陆疯狂软件教育官网. 一般情况下我们使用线程,在多个线程共同访问同一块资源.为保护线程资源的安全和线程访问的正确性. 在IO ...
- 于Unity3D动态创建对象和创建Prefab三种方式的原型对象
于Unity3D动态创建对象和创建Prefab三种方式的原型对象 u3d在动态创建的对象,需要使用prefab 和创建时 MonoBehaviour.Instantiate( GameObject o ...
- 黑马vue---56-58、vue组件创建的三种方式
黑马vue---56-58.vue组件创建的三种方式 一.总结 一句话总结: 不论是哪种方式创建出来的组件,组件的 template 属性指向的模板内容,必须有且只能有唯一的一个根元素 1.使用 Vu ...
- python核心高级学习总结3-------python实现进程的三种方式及其区别
python实现进程的三种方式及其区别 在python中有三种方式用于实现进程 多进程中, 每个进程中所有数据( 包括全局变量) 都各有拥有⼀份, 互不影响 1.fork()方法 ret = os.f ...
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】
一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...
- Java 实现线程安全的三种方式
一个程序在运行起来的时候会转换成进程,通常含有多个线程. 通常情况下,一个进程中的比较耗时的操作(如长循环.文件上传下载.网络资源获取等),往往会采用多线程来解决. 比如显示生活中,银行取钱问题.火车 ...
随机推荐
- 由Chromium内核引起的微信内置浏览器rce漏洞复现
背景 chrome浏览器爆出漏洞,github上公开了poc:https://github.com/r4j0x00/exploits/tree/master/chrome-0day,在关闭chrome ...
- [算法] 数据结构 splay(伸展树)解析
前言 splay学了已经很久了,只不过一直没有总结,鸽了好久来写一篇总结. 先介绍 splay:亦称伸展树,为二叉搜索树的一种,部分操作能在 \(O( \log n)\) 内完成,如插入.查找.删除. ...
- [leetcode] 69. x 的平方根(纯int溢出判断实现)
69. x 的平方根 非常简单的一个题,用二分法逼近求出ans即可,额外注意下溢出问题. 不过我要给自己增加难度,用long或者BigNum实现没意思,只能使用int类型 换句话当出现溢出时我们自己得 ...
- Error attempting to get column from result set
当使用mybatis plus3.2.0+springboot2.1.1 报错 Error attempting to get column from result set 1.一般出现这种问题,最简 ...
- C++标准模板库(STL)——vector常见用法详解
vector的定义 vector<typename> name; 相当于定义了一个一维数组name[SIZE],只不过其长度可以根据需要进行变化,比较节省空间,通俗来讲,vector就是& ...
- 最全JVM知识点思维导图,看这一篇就够了
此处是转发别人的,别人花了二个月, 我花一天时间看完, 觉得很有用 https://www.processon.com/view/link/5eea141cf346fb1ae56a44e7
- servlet、过滤器、监听器、拦截器之间的关系和区别
一.概念 1.什么是servlet servlet是一个接口.定义了一套处理网络请求的规范,所有实现servlet的类,都需要实现它那五个方法,其中最主要的是两个生命周期方法 init()和destr ...
- P5837 [USACO19DEC]Milk Pumping G
题目描述 Farmer John 最近为了扩张他的牛奶产业帝国而收购了一个新的农场.这一新的农场通过一个管道网络与附近的小镇相连,FJ 想要找出其中最合适的一组管道,将其购买并用来将牛奶从农场输送到小 ...
- UI自动化在RobotFramework中采用的分层设计
RF测试数据 RF测试数据由4种表数据组成.这些测试数据由表的第一个单元格标识,名称和用法如下: 表名 用法 别名 设置表 导入测试库,资源文件和变量文件.为测试套件和测试用例定义元数据 Settin ...
- 量子:基于ERP块对的两步量子直接通信
学习论文: 题目:Two-step quantum direct communication protocol using the Einstein-Podolsky-Rosen pair block ...