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种写法的更多相关文章

  1. Java 单例模式的七种写法

    Java 单例模式的七种写法 第一种(懒汉,线程不安全) public class Singleton { private static Singleton instance; private Sin ...

  2. 单例模式:Java单例模式的几种写法及它们的优缺点

    总结下Java单例模式的几种写法: 1. 饿汉式 public class Singleton { private static Singleton instance = new Singleton( ...

  3. Java多线程的三种实现方式

    java多线程的三种实现方式 一.继承Thread类 二.实现Runnable接口 三.使用ExecutorService, Callable, Future 无论是通过继承Thread类还是实现Ru ...

  4. java多线程的几种实现方式

    java多线程的几种实现方式 1.继承Thread类,重写run方法2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target3.通 ...

  5. 阿里巴巴--java多线程的两种实现方式,以及二者的区别

    阿里巴巴面试的时候,昨天问了我java面试的时候实现java多线程的两种方式,以及二者的区别当时只回答了实现线程的两种方式,但是没有回答上二者的区别: java实现多线程有两种方式: 1.继承Thre ...

  6. java单例模式的几种写法比较

    概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建 ...

  7. Java单例模式的6种写法

    在Java中,单例有很多种写法,面试时,手写代码环节,除了写算法题,有时候也会让手写单例模式,这里记录一下单例的几种写法和优缺点. 初级写法 懒汉式 饿汉式 双锁检验 内部类 枚举式 1.初级写法 p ...

  8. 【Java多线程】两种基本实现框架

    Java多线程学习1——两种基本实现框架 一.前言 当一个Java程序启动的时候,一个线程就立刻启动,改程序通常也被我们称作程序的主线程.其他所有的子线程都是由主线程产生的.主线程是程序开始就执行的, ...

  9. java多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

    多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 先看一下java线程运行时各个阶段的运行状态 j ...

随机推荐

  1. BZOJ2670 : Almost

    求出前缀和$s[]$,那么区间$[l,r]$的几乎平均数$=\frac{s[r]-s[l-1]}{r-l}$. 若只有一个询问,那么可以维护$(i,s[i-1])$的凸壳,在凸壳上二分点$(i,s[i ...

  2. 微信小程序内联h5页面,实现分享

    在小程序内直联h5的页面(pages/webview/webview.js),该页面为<web-view>的容器,使用<web-view>组件 <web-view wx: ...

  3. Java第二课 项目的导入和导出

    Java项目的导入和导出 项目的导入和导出1)导入 右击myeclipse或eclipse的左侧有项目那一栏空白部分或者是File--Import,然后选择Import--General--双击Exi ...

  4. java 上传图片 并压缩图片大小(转)

    Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好.从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片生 ...

  5. [原创]移动安全测试框架MobSF介绍

    [原创]移动安全测试框架MobSF介绍 1 mobsf简介 Mobile Security Framework (移动安全框架) 是一款智能.集成型.一体化的开源移动应用(Android/iOS)自动 ...

  6. Java Web 清除缓存

    res.setHeader("Cache-Control", "no-cache"); res.setHeader("Pragma", &q ...

  7. IIS安装、配置 发布网站 报错解决方案

    错误一:   HTTP 错误 500.19- Internal Server Error法请求该页面配置,因为页面的相关配置数据无效####   HTTP 错误 500.21 - Internal S ...

  8. ArcGIS鼠标滚轮方向之代码篇

    Desktop10.X有多个版本,不同版本的注册表路径不一致,注册表中可能残留多个版本的注册信息:也可能没有Desktop,而是Engine.其实可以通过RuntimeManager.ActiveRu ...

  9. JSONObject、JSONArray、Map、JavaBean的相互转换

    1,JSONObject json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value} 2,JSONArray json数组,使用中括号[ ],只不过数组里面的项也是json键 ...

  10. shell脚本:Kill掉MySQL中所有sleep的client线程

    分享一个shell脚本,实现kill掉mysql中所有的sleep状态的client线程,有需要的朋友,可以参考研究下. 文件名称:killsleep.sh. #It is used to kill ...