Java Tread多线程(1)实现Runnable接口
作者 : 卿笃军
原文地址:http://blog.csdn.net/qingdujun/article/details/39347245
本文演示,Tread多线程实现Runnable接口,以及简单的说明为什么有这样的创建线程的方法。
一、创建线程的2中方法:
1)继承Thread类实现多线程,參见我的上一篇文章:Java Tread多线程(0)一个简单的多线程实例 ;
2)另外一种方法就是实现Runnable接口,创建一个新线程。
二、为什么要有这两种方法创建线程呢?
①主要原因:就是方法1)不能满足我们的需求了,所以才产生了方法2);
②不能满足要求的原因:主要是Java里面仅仅能有单继承,假设一个类Student必须从Person类继承过来。可是Student里面的某些内容我们又要实现多线程,这不就矛盾了?(由于方法1要实现多线程就必须从Thread继承。)。所以这里就引入了Runnable方法:实现Runnable接口,以达到多线程的效果,建议平时都用另外一种方法。也就是本文的方法。
三、一个小Demo
package thread.runable1.qdj;
//1.定义类实现Runnable接口
class RunDemo1 implements Runnable
{
private int x = 0;
//2.覆盖Runnable接口中的run方法
//将线程代码存放在run中
public void run()
{
while (x <= 100)
System.out.println("Runnable:"+(x++));
}
}
public class CRunableDemo1 { public static void main(String[] args) {
RunDemo1 r = new RunDemo1();
//3.通过Thread类建立线程对象,并将Runnable接口的子类对象作为參数
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
//4.使用start开启线程
t1.start();
t2.start();
}
}
执行结果显示:(这里打印出了0-10。注意:没有反复的)
通过上面的执行结果,我们试比較一下例如以下代码(将x定义为局部变量):
package thread.runable1.qdj;
//1.定义类实现Runnable接口
class RunDemo1 implements Runnable
{
//private int x = 0;
//2.覆盖Runnable接口中的run方法
//将线程代码存放在run中
public void run()
{
for (int x = 0; x <= 3; ++x)
System.out.println("Runnable:"+x);
}
}
public class CRunableDemo1 { public static void main(String[] args) {
RunDemo1 r = new RunDemo1();
//3.通过Thread类建立线程对象。并将Runnable接口的子类对象作为參数
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
//4.使用start开启线程
t1.start();
t2.start();
}
}
执行结果显示(这里打印了2次发现没有?):
比較着两种情况。事实上也就说明了一个问题:
结论:局部变量在每一个线程里面都有一份。
參考文献: Java视频 毕向东 主讲
原文地址:http://blog.csdn.net/qingdujun/article/details/39347245
Java Tread多线程(1)实现Runnable接口的更多相关文章
- Java之多线程(实现Runnable接口)
package test_demo.ThreadsDemo; public class TestRunnable { public static void main(String[] args) { ...
- “全栈2019”Java多线程第三章:创建多线程之实现Runnable接口
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- 多线程之实现Runnable接口及其优点
多线程之实现Runnable接口: 1.创建一个Runnable接口的实现类 2.在实现类中重写Runnable接口的run方法 3.创建一个Runnable接口实现类的对象 4.创建Thread类对 ...
- Java多线程之实现Runnable接口
package org.study2.javabase.ThreadsDemo.runnable; /** * @Auther:GongXingRui * @Date:2018/9/18 * @Des ...
- (CSDN迁移) JAVA多线程实现-实现Runnable接口
实现Runnable接口 implements Runnable 重写run()方法 @Override public void run(){//TODO} 创建线程对象: Thread threa ...
- Java Tread多线程(2)多线程安全问题
作者 :卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39348093 本文演示,Tread多线程安全问题,以及几种解决多线程安全方式 ...
- 多线程(实现Runnable接口)
/** * 创建一个子线程, 完成1-100之间自然数的输出,同样的主线程执行同样的操作 *创建多线程的第二种方式,通过实现的方式 * 继承和实现的方式对比 * 一,联系: * public cla ...
- Java基础之线程——使用Runnable接口(JumbleNames)
控制台程序. 除了定义Thread新的子类外,还可以在类中实现Runnable接口.您会发现这比从Thread类派生子类更方便,因为在实现Runnable接口时可以从不是Thread的类派生子类,并且 ...
- Java之同步方法处理实现Runnable接口的线程安全问题
/** * 使用同步方法解决实现Runnable接口的线程安全问题 * * * 关于同步方法的总结: * 1. 同步方法仍然涉及到同步监视器,只是不需要我们显式的声明. * 2. 非静态的同步方法,同 ...
随机推荐
- 不思议迷宫:逆向后的放置play
前言 前置准备 目标分析 逆向加密逻辑 定位sign与key 解密luac 反编译luajit的bytecode 开启上帝模式 前言 看了fatezero的<阴阳师:一个非酋的逆向旅程& ...
- 【洛谷】P1156 垃圾陷阱【DP】
P1156 垃圾陷阱 题目描述 卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中.“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2≤D≤100)英尺. 卡门想把垃圾堆起来 ...
- Codeforces Round #303 (Div. 2) B. Equidistant String 水题
B. Equidistant String Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/54 ...
- 对于GTPv1协议头部的解析
参考ETSI EN 301 347 GTP是GPRS Tunnelling Protocol 的简称.GTP分为GTPv0(已经淘汰),GTPv1 和GTPv2.下面,介绍的是GTPv1. GTPv1 ...
- Ext文本输入框:Ext.form.TextField属性汇总(转) (
本章介绍Ext.form.TextField组件的基本用法: <form id="form1" runat="server"> <div ...
- 在WPF中实现玻璃模糊效果
在WPF中实现玻璃模糊效果还是比较简单的,主要方式如下: 添加一个Rectangle或其它控件作为玻璃放到顶部图层 将底部图像作为Brush(大多数的时候用VisualBrush)填充到Rectang ...
- Circuit level-shifts ac signals
AC signals can emanate from many sources, and many of these sources are incompatible with the most p ...
- Mastering stack and heap for system reliability
http://www.iar.com/Global/Resources/Developers_Toolbox/Building_and_debugging/Mastering_stack_and_he ...
- Cortex-M3 and Cortex-M4 Memory Organization
http://www.mikroe.com/download/eng/documents/compilers/mikropascal/pro/arm/help/memory_organization. ...
- DC-DC converter Control techniques
As shown in figure 3.4, PWM controller contains two main parts; voltage error-amplifier and voltage ...