java线程之创建线程类
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线程之创建线程类的更多相关文章
- Java中如何创建线程
Java中如何创建线程 两种方式:1)继承Thread类:2)实现Runnable接口. 1.继承Thread类 继承Thread类,重写run方法,在run方法中定义需要执行的任务. class M ...
- Java并发--如何创建线程
下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 转载原文链接:http://www.cnblogs.com/dolphin0 ...
- java的线程、创建线程的 3 种方式、静态代理模式、Lambda表达式简化线程
0.介绍 线程:多个任务同时进行,看似多任务同时进行,但实际上一个时间点上我们大脑还是只在做一件事情.程序也是如此,除非多核cpu,不然一个cpu里,在一个时间点里还是只在做一件事,不过速度很快的切换 ...
- Java中类的创建及类与对象的关系
//import java.util.Scanner; //创建一个类 class Person{ //属性和方法的定义不是必须的 //属性 String name ; int age ; //方法 ...
- java学习之创建线程方法二
我们上一节当中讲到了创建线程的第一种方法,就是继承Thread类,覆写Thread当中的run方法,然后创建子类对象,之后调用对象的start方法启动线程.但是这种方法有一个缺陷,因为我们知道在jav ...
- Java多线程-----匿名内部类创建线程
1.继承Thread类创建线程 package com.practise.createthread; public class AnonymousThread { public static v ...
- Java多线程——之一创建线程的四种方法
1.实现Runnable接口,重载run(),无返回值 package thread; public class ThreadRunnable implements Runnable { public ...
- Java多线程之创建线程的三种方式比较
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6560057.html 一:继承Thread类创建线程 1:继承Thread类定义线程子类: 2:重写run( ...
- java核心知识点----创建线程的第三种方式 Callable 和 Future CompletionService
前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...
随机推荐
- 我眼中的Linux设备树(二 节点)
二 节点(node)的表示首先说节点的表示方法,除了根节点只用一个斜杠"/"表示外,其他节点的表示形式如"node-name@unit-address".@前边 ...
- VC2010工程依赖不再自动链接
发现 VC2010 Express 设置了 Project Dependencies 之后并没有自动链接. 而在VC2008中工程依赖不仅影响构建顺序,也会自动链接依赖项. 具体说明见: http: ...
- 【翻译】Ext JS最新技巧——2014-8-13
原文:Top Support Tips Greg Barry:新的框架. 新的文档类型(Doctype) 在Ext JS 5,只支持IE8+,因此不再古力用户使用严格的HTML文档类型.现在,推荐使用 ...
- 【网站搭建】搭建独立域名博客 -- 独立域名博客上线了 www.hanshuliang.com
博客是安装在阿里云的服务器上. 小结 : -- 进入数据库命令 :mysql -uroot -p123456 ; -- 检查nginx配置语法 :.../nginx/sbin/nginx -t; -- ...
- STL常用查找算法介绍
adjacent_find() 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器.否则返回past-the-end. #include <io ...
- UML之部署图
部署图,英文名曰:Deployment Diagram,通常也称配置图,她是用来显示系统中软件和硬件的物理结构,从部署图中,我们可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况,使用部 ...
- zookeeper+kafka集群安装之一
zookeeper+kafka集群安装之一 准备3台虚拟机, 系统是RHEL64服务版. 1) 每台机器配置如下: $ cat /etc/hosts ... # zookeeper hostnames ...
- 【57】android图片印刻,阳刻,素描图效果处理
介绍我参与开发的妙趣剪纸app使用的图片处理相关的技术 关于妙趣剪纸,各大android商店都可以下载,下面贴出小米商店的链接 妙趣剪纸下载 软件效果截图 如何实现上面的图片处理效果呢 1.初始化高斯 ...
- 有引用外部jar包时(J2SE)生成jar文件
一.工程没有引用外部jar包时(J2SE) 选中工程---->右键,Export...--->Java--->选择JAR file--->next-->选择jar fil ...
- java解决hash算法冲突
看了ConcurrentHashMap的实现, 使用的是拉链法. 虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的.当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时.冲突就 ...