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 ...
随机推荐
- bzoj2502【有上下界的最大流】
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 834 Solved: 442[Submit][Status][Discuss] ...
- LUR和缺页次数
缺页:缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问. LRU(Least recently used)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问 ...
- 使用FFMPEG从MP4封装中提取视频流到.264文件 (转载)
命令行: ffmpeg -i 20130312_133313.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 20130312_133313.264 说明 ...
- app 后台程序设计
限制客户端一分钟之内访问接口的次数 1.设备的唯一标识获取这个实际上IOS7后会存在问题,权限已经收回了,android可以2.唯一标识可以通过生成一个token区分3.每分钟的频率可以这样设置 ke ...
- QT5每日一学(二)编写QT多窗口程序
一.添加主窗口 1.首先打开Qt Creator,新建Qt Widgets Application,项目名称设置为windows,在类信息界面保持基类为QMainWindow.类名为MainWindo ...
- Cunning Gena CodeForces - 417D
Cunning Gena CodeForces - 417D 题意 先将小伙伴按需要的监视器数量排序.然后ans[i][j]表示前i个小伙伴完成j集合内题目所需最少钱.那么按顺序枚举小伙伴,用ans[ ...
- iOS 实现复选框 checkbox --转
转自:http://www.cnblogs.com/ygm900/p/3468891.html -(void)checkboxClick:(UIButton *)btn{ btn.select ...
- [转]ASP.NET MVC 3 Application Upgrader
本文转自:http://aspnet.codeplex.com/releases/view/59008 Recommended Download ASP.NET MVC 3 Applicat ...
- Oracle的一些名词和概念
1.数据库 这里的数据库不是通常情况下我们所说的数据库,而是一个Oracle的专业名词.它是磁盘上存储数据的集合,在物理上表现为数据文件. 日志文件和控制文件等,在逻辑上以表空间形式存在.使用时,必须 ...
- 使用Jenkins进行android项目的自动构建(4)
加入单元测试 android单元测试很多都是使用Instrumentation进行的,这里讲的是试用JUnit,为什么用JUnit呢?因为使用Instrumentation需要打包apk安装,然后再进 ...