• 之前知道java中一个多线程的创建方法是继承Thread类或者实现Runable接口,但是看不懂下面这种创建线程的方法 第一种 new Thread(new Runnable() { @Override public void run() { } } }).start...

    1.线程的创建

    之前知道java中一个多线程的创建方法是继承Thread类或者实现Runable接口,但是看不懂下面这种创建线程的方法

    第一种

    new Thread(new Runnable() {
    			@Override
    			public void run() {
    			
    				}
    			}
    		}).start();//这种方式中new Thread()是创建了一个线程,而new Runable()对象中是线程想要执行的代码,这样把想要执行的代码放到一个创建的对象中,所
    
    			   //以很好的体现了面向对象的编程规则。

    或者下面这种创建格式

    第二种

    	new Thread(){
    			@Override
    			public void run() {
    				// TODO Auto-generated method stub
    				super.run();
    			}
    		}.start();

    其实两种方法昨天看了一段是视频现在理解了,其实第一种方法就是面向对象的思维模式去创建一个线程,在Thread的源码中,一种是通过构造方法传递一个Runable对象然后为target赋值,然后去实现一个线程的创建,也就是上面的第一种创建方法,一种是直接重写run方法,也就是上面的第二种方法创建线程,但是网上通常是使用第一种方法的比较多?那是为什么呢?是因为第一种通过构造方法的方式创建线程更能体现面向的规则,new Thread()是创建了一个对象,这个对象想要执行的代码就写在了括号里面,这样就很好的体现了面向对象的编程方式。

    那我们想一下,下面这种创建对象的方式是会执行Runable中的run方法还是执行thread的run方法呢?

    new Thread(
    				new  Runnable() {
    					public void run() {
    						while (true) {
    							try {
    								Thread.sleep(500);
    							} catch (InterruptedException e) {
    								e.printStackTrace();
    							}
    							System.out.println("runable" + Thread.currentThread().getName());
    						}
    					}
    				}
    		) {
    			@Override
    			public void run() {
    				while (true) {
    					try {
    						Thread.sleep(500);
    					} catch (InterruptedException e) {
    						e.printStackTrace();
    					}
    					System.out.println("thread" + Thread.currentThread().getName());
    				}
    			}
    		}.start();

    new Thread(new Runable(){}){}.start();答案是执行thread中的run方法(即是子类中的run方法),为什么呢?因为创建一个new thread的时候重写了父类中的run()方法,那么就会直接执行thread中的run方法了,如果这个子类中的run方法不存在的情况下才会去执行父类中的run方法。
    展开全文
  • Java线程学习笔记 2014-12-01 16:07:45
    Java线程学习笔记: 一、使用Thread创建线程的方法步骤 (1)创建一个新的线程类,实现Thread类; (2)定义一个线程类的对象,用new关键字完成创建; (3)利用线程对象启动线程的start()方法; (4)调用线程的...
  • 学习java基础部分也好久了,今天抽空把之前学习的多线程部分笔记记录一下,算是对我多线程部分的总结吧 废话不多说开始了. 1,首先什么是多线程? 说到线程那我们不得不说一下什么是进程,进程就是 正在运行的程序,...
  • Java 线程同步与死锁 学习笔记Java 线程同步与死锁 学习笔记 1 多线程共享数据 2 线程同步 3 同步准则 4 线程死锁 1、 多线程共享数据 在多线程操作中,多个线程可能同时处理同一个资源,这就是多线程中的共享数据。...
  • Java线程学习笔记 2015-01-22 00:52:22
    线程笔记目录 ·多线程的概念 (·)线程和进程 1.进程的概念 2.线程的概念 3.多线程的特性 4.注意区别并行和并发   ·多线程的创建和启动 (·)实现多线程的综述 1.综述 2.为什么要覆盖run()方法? 3. run()方法和...
  • Java线程学习笔记 2016-10-25 15:27:07
    Java线程学习笔记
  • Java 线程学习笔记 2014-10-23 17:09:33
    java 线程学习笔记一 1.线程的实现方法 a.继承Thread类 (创建对象new MyThread();) b.实现Runnable接口(创建对象 new Thread(new MyRunnable());) 2.开始执行线程 执行Thread.start()的方法能运行线程,线程...
  • Java线程学习笔记(一) 2003-06-21 10:44:00
    Java线程学习笔记(一)作者:陶冶(无邪)时间:2003.6.18一、线程类 Java是通过Java.lang.Thread类来实现多线程的,第个Thread对象描述了一个单独的线程。要产生一个线程,有两种方法: 1、需要从Java.lang.Thread...
  • JAVA线程学习 2017-08-01 21:37:42
    一、线程与进程1、线程:程序中单独顺序的控制流 线程本身是依靠程序进行运行,线程是程序中的顺序控制流,只能使用分配给程序的资源和环境。 2、进程:执行中的程序 一个进程可以包含一个或多个线程,即至少包含...
  • Java线程进程:系统进行资源分配和调度的一个独立单位 线程:在进程中独立运行的子任务使用多线程:多线程是异步的线程启动顺序与start()执行顺序无关非线程安全:指多个线程对同一个对象中的同一个实例变量进行...
  • java线程详细学习笔记(高级部分
  • Java线程笔记详解 2018-11-05 22:59:56
    Java线程学习笔记1之多线程基础 内容: 1) 基本概念以及线程的实现方法   Java线程学习笔记2之多线程基础 内容: 1) 数据同步 2) 非线程安全情况以及处理方法 3) Java内存模型 4) Thread.current...
  • java线程编程核心技术】1.java线程技能-笔记总结 【java线程编程核心技术】2.对象及变量的并发访问(上)-笔记总结 【java线程编程核心技术】2.对象及变量的并发访问(下)-笔记总结 【java线程编程...
  • 此博客主要是在观看张孝祥老师的教学视频的过程中,自己所做的学习笔记,在此以博客的形式分享出来,方便大家学习 参考资料 传智播客_张孝祥_Java线程与并发库高级应用视频教程下载 视频下载
  • Java线程安全的简单例子分析
  • 第一章 Java线程技能 进程和线程的概念及多线程的优点 使用多线程 继承 Thread 类 实现 Runnable 接口 currentThread 方法 isAlive 方法 sleep 方法 getId 方法 停止线程 判断线程是否是停止状态 在沉睡中停止 在...
  • java线程学习笔记 2013-10-11 19:13:47
    守护线程:setDeamon(true);然后开启start();用于后台运行(垃圾回收线程), 默认生命周期是jvm停止运行前被清理。 线程中断:设置循环标志位实现中断while(!flag){}  ----但如果线程处于冻结状态就无法读取标记...
  • java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每条线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序流的代码)。Java使用run方法来封装这样一段程序。 1.继承Thread...
  • 复活JAVA线程学习笔记 2014-11-17 18:35:33
    基础概念 线程对象是可以产生线程的对象.比如在java平台中Thread对象,Runnable对象. 线程,是指正在执行的一个指令序列.在java平台上是指从一个线程对象的start()开始. 运行run方法体中的那一段相对独立的过程.
  • Java学习笔记总结 java基础复习 1、 抽象类可以有构造器,可以有一个非抽象的父类 2、 垃圾回收机制回收的是堆里面的内存,栈里面的数据自动入栈自动出栈 3、 引用类型的数据在堆当中,内存中操作的只有栈,new...
1 2 3 4 5 ... 20
收藏数 44,867
精华内容 17,946