线程的创建两种方式

创建线程有四种方式,今天主要演示的是两种:继承Thread,实现Runable接口

继承Thread创建线程

import lombok.extern.slf4j.Slf4j;

@Slf4j
class MyThread extends Thread{
private int count=0;
@Override
public void run(){
for(int i=0;i<10;i++){
if(count<10){
log.info("{} :counter ={}",this.getName(),count++);
} } } }
@Slf4j
public class ThreadTest {
public static void main(String[] args) {
MyThread m1=new MyThread();
MyThread m2=new MyThread();
m1.start();
m2.start();
}
}

测试结果

2019-07-24 14:25:22,725   [Thread-0] INFO  MyThread  - Thread-0 :counter =0
2019-07-24 14:25:22,725 [Thread-1] INFO MyThread - Thread-1 :counter =0
2019-07-24 14:25:22,725 [Thread-1] INFO MyThread - Thread-1 :counter =1
2019-07-24 14:25:22,725 [Thread-1] INFO MyThread - Thread-1 :counter =2
2019-07-24 14:25:22,725 [Thread-0] INFO MyThread - Thread-0 :counter =1
2019-07-24 14:25:22,725 [Thread-0] INFO MyThread - Thread-0 :counter =2
2019-07-24 14:25:22,725 [Thread-1] INFO MyThread - Thread-1 :counter =3
2019-07-24 14:25:22,725 [Thread-0] INFO MyThread - Thread-0 :counter =3
2019-07-24 14:25:22,725 [Thread-1] INFO MyThread - Thread-1 :counter =4
2019-07-24 14:25:22,725 [Thread-1] INFO MyThread - Thread-1 :counter =5
2019-07-24 14:25:22,725 [Thread-1] INFO MyThread - Thread-1 :counter =6
2019-07-24 14:25:22,725 [Thread-1] INFO MyThread - Thread-1 :counter =7
2019-07-24 14:25:22,725 [Thread-1] INFO MyThread - Thread-1 :counter =8
2019-07-24 14:25:22,725 [Thread-1] INFO MyThread - Thread-1 :counter =9
2019-07-24 14:25:22,725 [Thread-0] INFO MyThread - Thread-0 :counter =4
2019-07-24 14:25:22,741 [Thread-0] INFO MyThread - Thread-0 :counter =5
2019-07-24 14:25:22,741 [Thread-0] INFO MyThread - Thread-0 :counter =6
2019-07-24 14:25:22,741 [Thread-0] INFO MyThread - Thread-0 :counter =7
2019-07-24 14:25:22,741 [Thread-0] INFO MyThread - Thread-0 :counter =8
2019-07-24 14:25:22,741 [Thread-0] INFO MyThread - Thread-0 :counter =9 Process finished with exit code 0

说明

两个线程,各自的变量,交替运行

实现Runable接口创建线程

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class RunableTest {
public static void main(String[] args) {
//内部类寄生于外部类,需要先创建外部类的对象
RunableTest test = new RunableTest();
MyThread m1 = test.new MyThread();
//两个线程共享一个对象
Thread t1 = new Thread(m1);
Thread t2 = new Thread(m1);
t1.start();
t2.start(); } class MyThread implements Runnable {
public int count = 0; @Override
public void run() {
for (int i = 0; i < 10; i++) {
//runable只继承了getClass方法
if(count<10){
log.info("{} :counter ={}", Thread.currentThread().getName(), count++);
} }
}
} }

测试结果


2019-07-24 14:26:40,722 [Thread-1] INFO RunableTest - Thread-1 :counter =1
2019-07-24 14:26:40,722 [Thread-0] INFO RunableTest - Thread-0 :counter =0
2019-07-24 14:26:40,737 [Thread-0] INFO RunableTest - Thread-0 :counter =3
2019-07-24 14:26:40,737 [Thread-0] INFO RunableTest - Thread-0 :counter =4
2019-07-24 14:26:40,737 [Thread-0] INFO RunableTest - Thread-0 :counter =5
2019-07-24 14:26:40,737 [Thread-0] INFO RunableTest - Thread-0 :counter =6
2019-07-24 14:26:40,737 [Thread-0] INFO RunableTest - Thread-0 :counter =7
2019-07-24 14:26:40,737 [Thread-0] INFO RunableTest - Thread-0 :counter =8
2019-07-24 14:26:40,737 [Thread-0] INFO RunableTest - Thread-0 :counter =9
2019-07-24 14:26:40,737 [Thread-1] INFO RunableTest - Thread-1 :counter =2 Process finished with exit code 0

说明

两个线程,共享一个对象,交替运行。

最新文章

  1. Codeforces Round #346 (Div. 2)E - New Reform(DFS + 好题)
  2. gulp初体验记录(简介、插件开发介绍)
  3. js事件 event.target
  4. Linux开机启动程序详解[转]
  5. 2014--9=17 软工二班 MyEclipse blue==2
  6. 深入分析 ThreadLocal 内存泄漏问题
  7. 【HDOJ】4348 To the moon
  8. dede后台反应特别慢-转
  9. MySQL数据库—查询基础,简单查询,条件查询,对查询结果排序
  10. Spring bean的生命周期详解
  11. Git-初始化配置及SSH_key配置
  12. spring boot中配置日志log和热部署
  13. webpack之proxyTable设置跨域
  14. Vue-Router动态路由匹配
  15. 20165214 2018-2019-2 《网络对抗技术》Exp1+ 逆向进阶 Week4
  16. WebService 的CXF框架 WS独立服务之HelloWorld
  17. MyLocationService
  18. TOMCAT在POST方法提交参数丢失问题
  19. nginx配置rewrite总结
  20. svn学习笔记(一)

热门文章

  1. 基于SSH开发银行个人业务管理系统 附源码
  2. pycharm/IDEA等 windows 版 常用快捷键
  3. ETCD授权认证
  4. 3_08_MSSQL课程_Ado.Net_子查询
  5. comsol日常联系
  6. org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Unknown database &#39;jdsc&#39;)
  7. [原]NTP时钟同步服务设置
  8. Vue专题系列
  9. slice 、 substr 、replace
  10. 关于Action模型驱动无法获取属性的问题