B1. Concurrent 多线程的创建
【概述】
多线程的创建常用的有两种方法:1). 继承 Thread 类; 2). 实现 Runnable 接口; 3). 实现 Callable 接口。
【继承 Thread 类】
/**
* 1. 继承 Thread 类, 并重写 run() 方法
* 2. 使用 Thread 类的 start() 启动线程
*/
public class Main {
public static void main(String[] args) {
new ThreadClass().start();
new ThreadClass().start();
}
} class ThreadClass extends Thread {
@Override
public void run(){
System.out.println(Thread.currentThread().getName());
}
}
【实现 Runnable 接口】
/**
* 1. 实现 Runnable 接口, 并重写 run() 方法
* 2. 使用 Thread 类的 start() 启动线程
*/
public class Main {
public static void main(String[] args) {
ThreadClass obj = new ThreadClass();
new Thread(obj).start();
new Thread(obj).start();
}
} class ThreadClass implements Runnable {
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
【实现 Callable 接口】
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask; /**
* 1. 实现 Callable 接口, 并重写 call() 方法
* 2. 创建 FutureTask 对象
* 3. 使用 Thread 类的 start() 启动线程
*/
public class Main {
public static void main(String[] args) {
ThreadClass obj = new ThreadClass();
FutureTask<Boolean> result = new FutureTask<Boolean>(obj);
new Thread(result).start();
}
} class ThreadClass implements Callable<Boolean> {
@Override
public Boolean call() throws Exception {
return true;
}
}
【区别】
1. Java 对于类是单继承,继承 Thread 类会导致该类无法继承其他类,若一个子类需要实现多线程,则不适合使用继承 Thread 类的线程实现方式;Java 对于接口是多继承, 实现 Runnable 接口的方式可以解决子类实现多线程的问题。
2. 实现 Runnable 接口的方式的可以共享实例数据,即多个不同的线程执行是同一实例的 run() 方法, 而继承 Thread 类不可以共享实例变量,多个不同线程执行的是不同实例的 run() 方法。
3. 实现 Callable 接口的底层实现也是基于实现 Runnable 接口的 run() 方法,经过封装后可以返回线程执行的结果,可以自定义返回类型。
B1. Concurrent 多线程的创建的更多相关文章
- iOS开发多线程篇—创建线程
iOS开发多线程篇—创建线程 一.创建和启动线程简单说明 一个NSThread对象就代表一条线程 创建.启动线程 (1) NSThread *thread = [[NSThread alloc] in ...
- Win32 多线程的创建方法和基本使用
Win32多线程的创建方法主要有: (1)CreateThread() (2)_beginthread()&&_beginthreadex() (3)AfxBeginThread() ...
- Python多线程的创建,相关函数和守护线程的理解
一:多线程的创建 threading库创建线程有两种方式,函数式和继承式 1)函数式 def func(): print 'Starting' print 'Ending' t=threadin ...
- Java多线程(1) 创建
一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下以下这张较为经典的图: Java线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Threa ...
- 牛客网Java刷题知识点之什么是进程、什么是线程、什么是多线程、多线程的好处和弊端、多线程的创建方式、JVM中的多线程解析、多线程运行图解
不多说,直接上干货! 什么是进程? 正在进行中的程序(直译). 什么是线程? 就是进程中一个负责程序执行的控制单元(执行路径). 见 牛客网Java刷题知识点之进程和线程的区别 什么是多线程? 一个进 ...
- java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)
今天开始就来总结一下Java多线程的基础知识点,下面是本篇的主要内容(大部分知识点参考java核心技术卷1): 1.什么是线程以及多线程与进程的区别 2.多线程的创建与启动 3.中断线程和守护线程以及 ...
- Java多线程的创建(一)
方法一:继承Thread类实现 1.创建一个类A,并继承Thread类 2.重写A的run()方法 3.创建A的实例对象b,即创建了线程对象 4.使用b调用start()方法:启动线程(会自动调用ru ...
- shell脚本(多线程批量创建用户)
shell脚本中的多线程 很多场景中会用到多线程,例如备份数据库,有100个库,正常备份效率极其低下.有了多线程原本可能需要10个小时备份,现在分10个线程同时去干,只要一个小时就解决了.今天就介绍下 ...
- Day 12_61_多线程的创建和启动(二)
多线程的创建和启动 * 在java中实现多线程的第二种方法 实现java.lang.Runnable接口,重写run()方法 * 推荐使用这种方式,因为实现接口还可以保留类的继承. package c ...
随机推荐
- 【HDU 1520】 Anniversary Party
[题目链接] 点击打开链接 [算法] 树形DP 令f[i][0]表示 : 以i为根的子树中,若i不参加宴会,所能获得的最大愉悦值 f[i][1]表示 : 以i为根的子树中,若i参加宴会,所能获得的最大 ...
- 转【前端基础进阶之Promise】
前言 Promise的重要性我认为我没有必要多讲,概括起来说就是必须得掌握,而且还要掌握透彻.这篇文章的开头,主要跟大家分析一下,为什么会有Promise出现. 在实际的使用当中,有非常多的应用场景我 ...
- poj3046 Ant Counting——多重集组合数
题目:http://poj.org/problem?id=3046 就是多重集组合数(分组背包优化): 从式子角度考虑:(干脆看这篇博客) https://blog.csdn.net/viphong/ ...
- Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等-uncheck
ylbtech-Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等 1.返回顶部 1. Java 实例 - 测试两个字符串区域是否相等 Java ...
- 用jQuery插件来提升SharePoint列表表单用户体验
本文将描述如何通过简单的CSS和jQuery插件提升SharePoint默认的列表表单体验.这些小技巧并不仅仅改善了外观,还提升了可用性. 剩余字数 我们以通知列表为例.通知正文字段假设要求不应该超过 ...
- python 面向对象十 __init__和__new__
一.__init__和__new__方法 __init__ 和 __new__ 最主要的区别在于:1.__init__ 通常用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性, 做一些额外的 ...
- PHP 循环一个文件下的所有目录以及文件
function test($dir) { //判断dir是否目录 if(is_dir($dir)) { $files = []; //列出 dir 目录中的文件和目录: $list = scandi ...
- JS 自写datapage.js 通用分页
var Page = function () { }; Page.prototype = { Loading: "<img src='/Content/Scripts/Data ...
- Flutter开发移动端APP的入门教程及简单介绍
Dart&Flutter环境搭建 安装 dart SDK 如果只开发移动应用,那么您不需要Dart SDK; 只需安装Flutter. 这里就直接安装 Flutter (dart SDK已经集 ...
- XML 基础学习
在w3school看到了XML的教程,想到以前工作学习中也接触到了XML,但只是简单搜索了解了下,没有认真去学习XML的基础,所以现在认真看下其基础部分,并写篇博客作为笔记记录下. XML 简介 XM ...