java实现多线程有两种方式,一种是继承Thread类,另外一种就是实现Runnable接口。

两种实现方法的优缺点:

  使用Thread类实现多线程局限性就是不支持多继承,因为java是不支持类多继承的,除此之外两种多线程没有任何区别。

  (如果你想创建线程的类已经有一个父类了,那么你只能实现Runnable接口实现来多线程)

知识点一:多线程的执行顺序是随机的

  代码的运行结果与代码的执行顺序是无关的。简单点说,就是多线程的执行顺序是随机的,这个是要看CPU调哪个,这个是不确定的。

下面我们可以看这段代码:

public class Test01 extends Thread {

    @Override
public void run() {
super.run();
System.out.println(1111);
} public static void main(String[] args) {
Test01 test01 = new Test01();
test01.start();
System.out.println("运行结束");
}
}

执行结果:

1111
运行结束 Process finished with exit code 0

但是看完之后好像没什么鸡儿的感觉.....

那么再看下面的吧,同时运行两条线程,每条线程循环并打印出自己的线程名字:

/**
* 两条线程同时运行,并输出各个线程的名字
*/
public class Test01 extends Thread { @Override
public void run() {
super.run();
for (int i = 0; i < 1000; i++) {
System.out.println("run=" + Thread.currentThread().getName());
} } public static void main(String[] args) {
Test01 test01 = new Test01();
test01.setName("线程");
test01.start();
for (int i = 0; i < 1000; i++) {
System.out.println("run=" + Thread.currentThread().getName());
}
}
}

因为各打印出1000次,所以我就复制一些有特点的打印语句吧:

run=线程
run=线程
run=main
run=线程
run=线程
run=线程
run=线程
run=线程
run=main
run=线程
run=线程
run=线程
run=线程
run=main

这次看到了么?虽然线程同时执行,但并不是有规律的,这个要看CPU调哪个线程,是无法控制的。

继承Thread类使用多线程的更多相关文章

  1. 多线程之继承Thread类及多线程内存分析

    *创建多线程的一种方式:继承Thread类 * java.lang.Thread是描述多线程的类,要实现多线程程序,一种方式就是继承Thread类 * 1.创建一个类Mythread让其extends ...

  2. 通过继承Thread类实现多线程

    (1)继承Thread类(2)重写run(方法(3)通过start0方法启动线程 一定的缺点: Java中的类是单继承的,一旦继承了Thread类,就不允许再去继承其它的类 线程和主方法之间的执行顺序 ...

  3. Java通过继承thread类与实现Runnable接口实现多线程的区别

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

  4. Java 多线程实现方式一:继承Thread类

    java 通过继承Thread类实现多线程很多简单: 只需要重写run方法即可. 比如我们分三个线程去京东下载三张图片: 1.先写个下载类: 注意导入CommonsIO 包 public class ...

  5. 创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法

    第一种:继承thread类,重写run()方法 一般方式:Demo01.java /** * 创建线程的第一种方式:继承thread类,重写run()方法 * * @author :liuqi * @ ...

  6. Java之同步代码块处理继承Thread类的线程安全问题

    package com.atguigu.java; /** *//** * 使用同步代码块解决继承Thread类的方式的线程安全问题 * * 例子:创建三个窗口卖票,总票数为100张.使用继承Thre ...

  7. 线程创建的三种方法:继承Thread类,实现Runnable接口,实现Callable接口

    线程创建 三种创建方式 1. 继承Thread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程 线程不一定执行,CPU按排调度 pa ...

  8. Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别

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

  9. JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)

    实现线程并发有两种方式:1)继承Thread类:2)实现Runnable接口. 线程基础 1)程序.进程.线程:并行.并发. 2)线程生命周期:创建状态(new一个线程对象).就绪状态(调用该对象的s ...

随机推荐

  1. 《Head First 设计模式》之迭代器与组合模式——遍历合并的菜单

    迭代器与组合模式(Iterator & Composite) 迭代器:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 组合:允许你将对象组成树形结构来表现“整体.部分” ...

  2. webapp一些样式记录

    图片外面的div设置宽高自适应width: 100vw; max-width: 640px; display: block; height: 43.75vw; max-height: 280px; f ...

  3. 编程中的多字节和Unicode

    在编译许多程序的时候,我们常常会出现诸如指针转换错误或者const char[] 不能转换成XX的错误,这时很可能就是项目编码的问题了,如果您使用的是VS编程环境,那么打开工程属性,里面就有个选项是给 ...

  4. Python常见编程规范总结

    Pythonic定义 Python最常用的编码风格还是PEP8,详见:http://jython.cn/dev/peps/pep-0008/ Pythonic确实很难定义,先简单引用下<Pyth ...

  5. Centos7安装 PostgreSQL步骤

    1. 安装服务器即可. Yum install postgresql-server Yum install postgresql-contrib 2. 验证是否安装成功: rpm -aq| grep ...

  6. 求和VII

    问题 K: 求和VII 时间限制: 2 Sec  内存限制: 256 MB提交: 422  解决: 53[提交] [状态] [讨论版] [命题人:admin] 题目描述 master对树上的求和非常感 ...

  7. SC || 记不住的正则

    +表示一个或多个 *表示零个或多个 ?表示零个或一个 {n} 表示n次 {n,m}表示[n, m]次  {,n}==[0,n] {m,}==[m,INT_MAX] \d 一个数字 \D 一个非数字 \ ...

  8. python之道12

    整理今天笔记,课上代码最少敲3遍. 用列表推导式做下列小题 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 l = ['wusir', 'laonanhai', 'aa', 'b', 'tai ...

  9. Abode Dreamweaver cc 安装与激活

    原文链接Abode Dreamweaver CC是Adobe宣布放弃Creative Suite系列产品后推出的新版Creative Cloud产品,功能上修复了CS6中出现的选取代码不精准的问题,最 ...

  10. Java之JDK的下载与安装,java环境变量的配置,Editplus的下载与使用

    JRE(Java Runtime Environment Java运行环境) 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发 ...