很久没有写java程序了,由于为了改变目前的状况,打算花两天时间学习一下java的线程开发和高并发。

线程开发使用thread类,或者runnable接口,而且thread类也是实现了runnable接口的。

先来个小甜点作为开始,如下为创建多个线程,并且同时处理。

package firstThreadStudy;public class MyThread extends Thread {public MyThread(){System.out.println("MyThread currentThread().getName()="+Thread.currentThread().getName());System.out.println("MyThread this.getName=" + this.getName());}@Overridepublic void run(){System.out.println("run currentThread().getName()="+Thread.currentThread().getName());System.out.println("run this.getName="+this.getName());int i=2;while(i>0){System.out.println("run " + this.getName() + ": i = " + (i--));try{Thread.sleep(1000);}catch(Exception e){e.printStackTrace();}}}
}

测试类:

package firstThreadStudy;public class Test2MyThread {public static void main(String[] args) {// TODO Auto-generated method stubMyThread boy = new MyThread();boy.setName("boy");MyThread girl = new MyThread();girl.setName("girl");Thread car = new Thread(girl);car.setName("car");boy.start();car.start();System.out.println("method end");}}

另外,特别补充说明

Thread.currentThread().getName()

this.getName()

的区别,前者表示调用当前方法的线程名,后者表示当前线程对象名。可能不是很好理解,根据下面输出解释会比较好理解些。

上列的输出可能性之一如下(线程是随机调度的):

MyThread currentThread().getName()=main
MyThread this.getName=Thread-1
MyThread currentThread().getName()=main
MyThread this.getName=Thread-2
run currentThread().getName()=boy
run this.getName=boy
method end
run currentThread().getName()=car
run boy: i = 2
run this.getName=girl
run girl: i = 2
run girl: i = 1
run boy: i = 1

girl对象和 car对象是两个对象,因为this.getName()是girl对象中的代码,所以this访问的girl对象。

Thread.currentTread().getName()指当前调用方法的线程对象,不是指gril对象,而是car对象,girl对象只是一个传入其中的参数,girl对象的run方法是由car对象的start()方法触发调度,并不是girl对象的start()触发。gril虽然是个线程对象,但是并未启动,所以其本身并没有线程,而是依托在car线程中执行。

额,我觉得说了上面这些废话,应该能解释清楚。

转载于:https://blog.51cto.com/gugw9handsome/1784131

java线程学习-Thread.currentTread().getName()和this.getName()的区别相关推荐

  1. java线程学习,GitHub - zksir/thread: Java多线程学习

    Java多线程学习 threadcoreknowledge包----线程核心知识基础 createthreads包 创建线程 1.实现多线程的方法是1种还是2种还是4种? Oracle官方:2种,一种 ...

  2. java线程(Thread)的创建与常用方法

    目录 Process与Thread 线程的创建 继承Thread 2. 实现Runnable 3. 实现Callable 通过线程下载图片的例子 实现Runnable接口 抢票的例子: 龟兔赛跑: 实 ...

  3. java线程学习记录

    线程 什么是线程? 线程是一个轻量级的子进程,是最小的处理单元.多线程和多进程都用于实现多任务处理.但是,我们使用多线程而不是多进程,因为线程使用共享内存区域,它们不分配单独的内存区域以节省内存,而且 ...

  4. java多线程基础篇(二)java线程常见问题Thread Dump日志分析

    线程常见问题 CPU占用率很高,响应很慢 CPU占用率不高,但响应很慢 线程出现死锁的情况 CPU占用率不高,但响应很慢 有的时候我们会发现CPU占用率不高,系统日志也看不出问题,那么这种情况下,我们 ...

  5. java线程学习(二):线程池

    本章继续深入学习线程-线程池 线程池的基本概念 JDK5之前,都是程序员自己手动创建线程池,JDK5之后,内置线程池技术. 什么是线程池呢? 可以简单理解成容纳多个线程的容器,其中的线程是可以反复使用 ...

  6. 【Java线程】Thread Runnable必知必会

    1.Java中线程的创建有两种方式: 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中; 通过实现Runnable接口,实例化Thread类; (1).继承Threa ...

  7. Java线程学习实例——采用同步锁,互斥锁与同步锁的区别,synchronized的使用方法

    栗子来源:https://blog.csdn.net/wenzhi20102321/article/details/52524545 首先对java中同步锁与互斥锁进行区分,主要来源于知乎中的大佬总结 ...

  8. Java线程学习笔记(两) 线程异常处理

    线程捕获异常: 情况下,我们在main()方法里是捕捉不到线程的异常的,比例如以下面代码: public class ExceptionThread implements Runnable{@Over ...

  9. java线程学习第一天__低配版的卖面包机

    package Thread; import javax.xml.bind.ValidationEvent; class snacks{     private int  SaledSnacks=0; ...

最新文章

  1. Java 学习笔记(4)——java 常见类
  2. 块存储、文件存储、对象存储这三者和分布式文件存储系统的本质区别
  3. 一个关于malloc的面试题
  4. python添加系统环境win7_python环境配置(基于win7 x64)
  5. java.lang包—类加载器ClassLoader类
  6. linux之用openssl命令Base64编码解码、md5/sha1摘要、AES/DES3加密解密
  7. mysql typeindex_explain mysql的type字段,索引的类型
  8. 网络基础 2-1(应用层,HTTP三点注意,HTTP协议格式, 最简单的HTTP服务器)
  9. [vue] 你有使用过vue开发多语言项目吗?说说你的做法?
  10. Python3——简单的TCP实例
  11. wordpress的下载和安装介绍
  12. Python与JavaWeb的第一次碰撞
  13. 5G 十项全能、搭载麒麟 820 芯片,1899 元起的荣耀 X10 来了!
  14. 长江浪漫水城2008年度营业时间和票价
  15. 基于Cocos2d-x开发guardCarrot--1 《保卫萝卜》简介
  16. Google cloud 存储 Storage
  17. 李雅普诺夫稳定性理论 matlab,李雅普诺夫稳定理论的定义应用解析.ppt
  18. 计算机怎么格式化电脑吗,电脑怎么格式化
  19. Python 贪心法:真分数表示为埃及分数之和
  20. 四、快速搭建一套现代化的个人独立博客系统,给爱写博客的你(part2 正文)

热门文章

  1. ZOJ 1423 (Your)((Term)((Project))) (模拟+数据结构)
  2. 潜移默化学会WPF--线程巧用(一)
  3. 分布式通信框架 - rmi
  4. WebSockets[翻译]
  5. Ubuntu 安装mysql和简单操作
  6. 网站权重增加需要做的
  7. js中的失误导致的奇怪事
  8. 小试“ASUS WL-500W无线路由”
  9. 好像最近买了很多东西
  10. 全球最大医疗器械公司在中国寻找移动医疗新机会