java多线程的3种写法
1.Thread
/**
*
*/
package testJava2.thread; /**
* @author xxx.sjtu
* @function
* @date 2017年5月17日
* @version
*/
public class FirstThreadTest extends Thread {
int i = 0; public FirstThreadTest(int i) {
super();
this.i = i;
} public FirstThreadTest() {
super();
// TODO Auto-generated constructor stub
} public FirstThreadTest(Runnable target, String name) {
super(target, name);
// TODO Auto-generated constructor stub
} public FirstThreadTest(Runnable target) {
super(target);
// TODO Auto-generated constructor stub
} public FirstThreadTest(String name) {
super(name);
// TODO Auto-generated constructor stub
} public FirstThreadTest(ThreadGroup group, Runnable target, String name,
long stackSize) {
super(group, target, name, stackSize);
// TODO Auto-generated constructor stub
} public FirstThreadTest(ThreadGroup group, Runnable target, String name) {
super(group, target, name);
// TODO Auto-generated constructor stub
} public FirstThreadTest(ThreadGroup group, Runnable target) {
super(group, target);
// TODO Auto-generated constructor stub
} public FirstThreadTest(ThreadGroup group, String name) {
super(group, name);
// TODO Auto-generated constructor stub
} // 重写run方法,run方法的方法体就是现场执行体
public void run() {
//当前线程: this
System.out.println(this.getName() + " " + i);
} public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
new FirstThreadTest(888).start();
}
}
2.Runnable
/**
*
*/
package testJava2.thread; /**
* @author xxx.sjtu
* @function
* @date 2017年5月17日
* @version
*/
public class RunnableThreadTest implements Runnable { private int i; public RunnableThreadTest() {
super();
// TODO Auto-generated constructor stub
} public RunnableThreadTest(int i) {
super();
this.i = i;
} @Override
public void run() {
//当前线程: Thread.currentThread()
System.out.println(Thread.currentThread().getName() + " " + i);
} public static void main(String[] args) {
System.out.println(Thread.currentThread().getName());
RunnableThreadTest rtt = new RunnableThreadTest(999);
new Thread(rtt, "新线程1").start();
}
}
3.Callable
/**
*
*/
package testJava2.thread; import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask; /**
* @author xxx.sjtu
* @function
* @date 2017年5月17日
* @version
*/
public class CallableThreadTest implements Callable<Integer> { @Override
public Integer call() throws Exception {
int i = 2017;
System.out.println(Thread.currentThread().getName() + " " + i);
return i;
} public static void main(String[] args) {
CallableThreadTest ctt = new CallableThreadTest();
FutureTask<Integer> ft = new FutureTask<>(ctt);
new Thread(ft, "有返回值的线程").start();
try {
System.out.println("子线程的返回值:" + ft.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} } }
java多线程的3种写法的更多相关文章
- Java 单例模式的七种写法
Java 单例模式的七种写法 第一种(懒汉,线程不安全) public class Singleton { private static Singleton instance; private Sin ...
- 单例模式:Java单例模式的几种写法及它们的优缺点
总结下Java单例模式的几种写法: 1. 饿汉式 public class Singleton { private static Singleton instance = new Singleton( ...
- Java多线程的三种实现方式
java多线程的三种实现方式 一.继承Thread类 二.实现Runnable接口 三.使用ExecutorService, Callable, Future 无论是通过继承Thread类还是实现Ru ...
- java多线程的几种实现方式
java多线程的几种实现方式 1.继承Thread类,重写run方法2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target3.通 ...
- 阿里巴巴--java多线程的两种实现方式,以及二者的区别
阿里巴巴面试的时候,昨天问了我java面试的时候实现java多线程的两种方式,以及二者的区别当时只回答了实现线程的两种方式,但是没有回答上二者的区别: java实现多线程有两种方式: 1.继承Thre ...
- java单例模式的几种写法比较
概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...
- Java单例模式的6种写法
在Java中,单例有很多种写法,面试时,手写代码环节,除了写算法题,有时候也会让手写单例模式,这里记录一下单例的几种写法和优缺点. 初级写法 懒汉式 饿汉式 双锁检验 内部类 枚举式 1.初级写法 p ...
- 【Java多线程】两种基本实现框架
Java多线程学习1——两种基本实现框架 一.前言 当一个Java程序启动的时候,一个线程就立刻启动,改程序通常也被我们称作程序的主线程.其他所有的子线程都是由主线程产生的.主线程是程序开始就执行的, ...
- java多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 先看一下java线程运行时各个阶段的运行状态 j ...
随机推荐
- C++学习笔记52:查找
//函数查找 template <class T> int seqSearch(const T list[], int n, const T &key) { ; i < n; ...
- C++学习笔记46:模板与群体数据
函数模板 创建一个通用功能的函数,支持多种不同的形参:简化重载函数的函数体设计: 语法形式 template <模板参数表> 函数定义:模板参数表的内容:类型参数:class(或typen ...
- 数据库出现'\xF0\x9F\x98\xB8'
https://www.cnblogs.com/jinTaylor/p/4607505.html https://blog.csdn.net/qq_40074764/article/details/7 ...
- navicat for mysql 只把指定的表数据结构导出
第一步 右键点击数据库名字,点击数据传输,在常规视图下选择自己要导出的表, 选择要导出的表,点击文件,然后切换到高级视图下,把插入记录前面的对号取消勾选,点击开始即可只导出表结构
- jquery 获取奇数索引的元素,获取复选框,判断是否选中
$(".btn-xs:odd").click(function(){ var $buy_num=$(this).prev("#buy_num").val(); ...
- Linux命令之tar篇
作业一: 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) [root@localhost ~]# cat /etc/passwd /etc/group > ...
- Vue(十五)组件
一. 组件component 1. 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码 组件是自定义元素(对象) 2. 定义组件 ...
- js文档节点关系
这一节简单介绍一下文档节点方面的相关内容: 一:获得节点关系的属性 1.获得该元素父节点的引用:obj.parentNode: <div class="content"> ...
- webloigc 控制台修改登录密码
- DBS-Function:f_GetPy
ylbtech-SQL Server-Function:f_GetPy A, 返回顶部 1.f_GetPy )) ) as begin ) ) collate Chinese_PRC_CI_AS, ...