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. Android实训案例(九)——答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程

    Android实训案例(九)--答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程 项目也是偷师的,决心研究一下数据库.所以写的还是很详细的,各位看官,耐着性子看完,实现结果不重要 ...

  2. Java创建二叉搜索树,实现搜索,插入,删除操作

    Java实现的二叉搜索树,并实现对该树的搜索,插入,删除操作(合并删除,复制删除) 首先我们要有一个编码的思路,大致如下: 1.查找:根据二叉搜索树的数据特点,我们可以根据节点的值得比较来实现查找,查 ...

  3. nginx 编译增加新的模块

    原已经安装好的nginx,现在需要添加一个未被编译安装的模块: nginx -V 可以查看原来编译时都带了哪些参数 原来的参数:--prefix=/app/nginx 添加的参数: --with-ht ...

  4. JavaScript进阶(八)JS实现图片预览并导入服务器功能

    JS实现导入文件功能       赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,共勉!(PS:此篇博文是自己在午饭时间所写,为此没吃午饭,这就是程序猿 ...

  5. libevent之Reactor模式

    通过前边的一篇博文轻量级网络库libevent初探,我们知道libevent实际上是封装了不同操作系统下的/dev/poll.kqueue.event ports.select.poll和epoll事 ...

  6. SpriteBuilder中使用TrueType字体的一些障碍

    在实践中,有一些小的陷阱和障碍可能阻止你使用一般的TrueType字体. 第一个,必须要有一个有效的字体文件.在Finder中双击该.ttf文件,应该会打开Font Book app,显示一个象形符号 ...

  7. 菜鸟玩云计算之十七:RHEL克隆虚拟机后改变网卡地址

    菜鸟玩云计算之十七:RHEL克隆虚拟机后改变网卡地址 (一)更改hostname # vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=your-vm ...

  8. Leetcode_204_Count Primes

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46366207 Description: Count the ...

  9. SQL Queries and Multi-Org Architecture in Release 12

    In this Document   Abstract   History   Details   Previous Releases   Release 12   Multi-Org Session ...

  10. mybatis源码之StatementHandler

    /** * @author Clinton Begin */ public interface StatementHandler { Statement prepare(Connection conn ...