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 ...
随机推荐
- 【模拟】[NOIP2011]铺地毯[c++]
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯,一共有n张地毯,编号从 1 到n.现在将这些地毯按照编号从小到大的顺序平行于坐标轴 ...
- css解决滚动弹出层里边的滚动条时带动了整个页面滚动的问题
之前一个朋友问我说他的一个弹出层在弹出后,上下滑动弹出层或遮罩层,结果遮罩层下边的整个页面(页面超出了一屏)也跟着滚动了,他说他不想要这样的效果,我说你把弹出层和遮罩层的position:fixed设 ...
- 1、mysql初识
之前我们写代码需要存取信息时用的是文件可是用文件存取数据非常局限,今天我们将走进一个新的世界mysql 本片导航: 数据库由来 数据库概述 mysql介绍 下载安装 mysql软件基本管理 初识sql ...
- pin-a-binary-instrumentation-tool
https://software.intel.com/en-us/articles/pin-a-binary-instrumentation-tool-downloads Introduction t ...
- Linux之清理linux内存cache
转自:https://www.cnblogs.com/madsnotes/articles/5740495.html 频繁的文件访问会导致系统的Cache使用量大增.例如:在使用grep从很多文件中搜 ...
- linux 系统下使用socket进行本地进程间通信
转自:https://blog.csdn.net/baidu_24553027/article/details/54912724 使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不 ...
- maven项目,httpclient jar包冲突
包含httpclient的jar包 org.apache.thrift:libthrift org.jboss.resteasy:resteasy-jaxrs com.alibaba:dubbo ma ...
- python2.7升级3.5教程 可用
1.查看Python版本: python -V 2.下载Python 3.5版本:wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.t ...
- CentOS7配置MySQL5.7主备
1:主库设置(1)修改配置文件vi /etc/my.cnf[mysqld]log-bin=master-binserver-id=1 (2)创建用户#mysql -u root -pmysql> ...
- 一些Android手机的平台信息
1.OPPO A83 (2018-04-16) A83:/ $ cat /system/build.prop | grep "product"# ro.product.cpu.ab ...