1.extends Thread方法

 class Person extends Thread {
int sum1 = 50; // 含参构造器
public Person(String name) {
super(name);
} // 重写run()方法
@Override
public void run() {
for (int i = 0; i < 50; i++) {
eat();
}
} // 线程具体任务
public void eat() {
if (sum1 > 0) {
System.out.println(getName() + "吃了一个苹果," + "还剩" + --sum1 + "个苹果");
try {
Thread.sleep(100); //休眠100ms
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} public class Eatapple {
//创建线程对象,并开启
public static void main(String[] args) {
Person x = new Person("x");
x.start();
}
}

控制台输出(截取部分)

 x吃了一个苹果,还剩49个苹果
x吃了一个苹果,还剩48个苹果
x吃了一个苹果,还剩47个苹果
x吃了一个苹果,还剩46个苹果
x吃了一个苹果,还剩45个苹果
x吃了一个苹果,还剩44个苹果
x吃了一个苹果,还剩43个苹果
x吃了一个苹果,还剩42个苹果
x吃了一个苹果,还剩41个苹果
x吃了一个苹果,还剩40个苹果
x吃了一个苹果,还剩39个苹果
x吃了一个苹果,还剩38个苹果

上面红字标出的getName(),实际上等价于this.getName(),返回当前线程的名称,在这里就是“x”。

Thread.sleep(100);线程休眠100ms,所以控制台会逐条打印语句。

2.implements Runnable 方法

 class Apple implements Runnable {
int sum1 = 50; // 重写run()方法
@Override
public void run() {
for (int i = 0; i < 50; i++) {
eat();
}
} // 线程具体任务
public void eat() {
if (sum1 > 0) {
System.out.println(Thread.currentThread().getName() + "吃了一个苹果," + "还剩" + --sum1 + "个苹果");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
} public class Eatapple {
public static void main(String[] args) {
//创建线程对象并开启
Apple a = new Apple();
new Thread(a, "AA").start();
}
}

注意这里获取线程名称“AA”的方法。

解析:extends Thread方法看上去清晰明了,新建一个子类继承线程类,实例化子类对象(线程对象),start()

方法开启线程。

implements Runnable方法,实现了一个Runnable接口,然后用Thread(Runnable class,String name)构造

方法新建线程,start()方法开启。

在多线程操作中,由于第一种方法创建的线程不能够完全实现资源以及信息的的共享,所以我们建议使用第二种方法。

java线程之创建线程类的更多相关文章

  1. Java中如何创建线程

    Java中如何创建线程 两种方式:1)继承Thread类:2)实现Runnable接口. 1.继承Thread类 继承Thread类,重写run方法,在run方法中定义需要执行的任务. class M ...

  2. Java并发--如何创建线程

    下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 转载原文链接:http://www.cnblogs.com/dolphin0 ...

  3. java的线程、创建线程的 3 种方式、静态代理模式、Lambda表达式简化线程

    0.介绍 线程:多个任务同时进行,看似多任务同时进行,但实际上一个时间点上我们大脑还是只在做一件事情.程序也是如此,除非多核cpu,不然一个cpu里,在一个时间点里还是只在做一件事,不过速度很快的切换 ...

  4. Java中类的创建及类与对象的关系

    //import java.util.Scanner; //创建一个类 class Person{ //属性和方法的定义不是必须的 //属性 String name ; int age ; //方法 ...

  5. java学习之创建线程方法二

    我们上一节当中讲到了创建线程的第一种方法,就是继承Thread类,覆写Thread当中的run方法,然后创建子类对象,之后调用对象的start方法启动线程.但是这种方法有一个缺陷,因为我们知道在jav ...

  6. Java多线程-----匿名内部类创建线程

       1.继承Thread类创建线程 package com.practise.createthread; public class AnonymousThread { public static v ...

  7. Java多线程——之一创建线程的四种方法

    1.实现Runnable接口,重载run(),无返回值 package thread; public class ThreadRunnable implements Runnable { public ...

  8. Java多线程之创建线程的三种方式比较

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6560057.html  一:继承Thread类创建线程 1:继承Thread类定义线程子类: 2:重写run( ...

  9. java核心知识点----创建线程的第三种方式 Callable 和 Future CompletionService

    前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...

随机推荐

  1. shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)

    fork ( /directory/script.sh) fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本. 运行的时候开一个sub- ...

  2. c语言和java的区别

    今晚读了一下c程序设计语言,这是一本经典书籍,发现C语言和java有很多是相同的,毕竟java是由c语言进化来的. 我大概从我自己的思考来谈谈不同点 1.c语言是面向过程,主要单位是函数,变量和函数的 ...

  3. 中国梦&nbsp;&nbsp;每个农大人的梦

    历经百年风霜,苦经岁月沧桑.农大,一个中原沃土上生长起来的大树,它在用它那不倒的生命力展示着农大的顽强与坚持,而这份苍劲和顽强,却来自于每个农大人,来自于他们的梦想,来自于他们的坚持,来自于他们的努力 ...

  4. ceres-solver库使用示例

    上一篇博客大致说明了下ceres-solver库的编译,然后形成了一个二次开发的库,下面就是用这个二次开发库来写一个简单(其实不太简单)的DEMO来演示ceres-solver库的强大.我们以求解一个 ...

  5. startService与bindService的区别

    转自:http://www.devdiv.com/thread-52226-1-1.html Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDes ...

  6. 类成员函数后边加const

    本文主要整理自stackoverflow上的一个对问题Meaning of “const” last in a C++ method declaration?的回答. 测试1 对于下边的程序,关键字c ...

  7. Linux网络设置(第二版) --互联网寻址过程

    Linux网络设置 --互联网寻址过程 1.TCP/IP与OSI参考模型比较 TCP/IP OSI 物理层 网卡 数据链路层 * MAC地址 网络层 IP,ICMP,ARP协议 传输层 TCP,UDP ...

  8. 【Android 应用开发】Android中的回调Callback

    回调就是外部设置一个方法给一个对象, 这个对象可以执行外部设置的方法, 通常这个方法是定义在接口中的抽象方法, 外部设置的时候直接设置这个接口对象即可. 例如给安卓添加按钮点击事件, 我们创建了OnC ...

  9. hbase 集群管理脚本

    #!/bin/bash # Show all running Java processes on region servers. Must run on master using HBase owne ...

  10. android-async-http框架源码分析

    async-http使用地址 android-async-http仓库:git clone https://github.com/loopj/android-async-http 源码分析 我们在做网 ...