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 ...
随机推荐
- python网络编程(四)
TFTP客户端 1. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输 ...
- [jzoj]1417.数学题
Link https://jzoj.net/senior/#main/show/1417 Problem 当Alice在浏览数学书时,看到一个等式A=S,奇怪的是A和S并不相等.Alice发现可以通过 ...
- Java 异常 重写抛出异常限制
1 子类在重写父类抛出异常的方法时,要么不抛出异常,要么抛出与父类方法相同的异常或该异常的子类.如果被重写的父类方法只抛出受检异常,则子类重写的方法可以抛出非受检异常.例如,父类方法抛出了一个受检异常 ...
- Incorrect username or password ( access token )解决
Q:Git提交时,给出提示Incorrect username or password ( access token ) K: 此处是用户名或者密码有误,建议解决方法两种.具体看哪一种可行,可试. 第 ...
- NodeJS 连接接MySQL
NodeJS 连接接MySQL MySQL是常用数据库,作为后端模块,nodejs可以提供了mysql接口 安装 $ npm install mysql 测试代码 var mysql = requir ...
- 全排列 ---java
排列的一种好方法,用链表来记录数据,简单明了,简称模板,值得记录 public class main{ static int count=0; public static void f(List< ...
- C_求质数
质数:质数(prime number)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数. 题设:输入一个大于1的自然数,求出从2到该数之间所有的质数 ...
- JS_高程5.引用类型(4)Array类型的各类方法
一.转换方法 所有的对象都具有toLocaleString(),toString()和valueOf()方法.调用toString()方法会返回由数组中的每个值的字符串拼接而成的一个以逗号分隔的字符串 ...
- poj3280 Cheapest Palindrome(回文串区间dp)
https://vjudge.net/problem/POJ-3280 猛刷简单dp第一天第三题. 这个据说是[求字符串通过增减操作变成回文串的最小改动次数]的变体. 首先增减操作的实质是一样的,所以 ...
- 无法打开运行空间池,服务器管理器winrm插件可能已损坏或丢失
在使用windows2012 的服务器或云主机时,服务器安装不了iis服务. 提示 “无法打开运行空间池,服务器管理器winrm插件可能已损坏或丢失”. 这个问题可能的原因是您的机器未设置虚拟内存,可 ...