Java中实现多线程的两种方式
来源:互联网 发布:淘宝 绳子泳衣 编辑:程序博客网 时间:2024/06/03 06:34
Java中对于对于多线程的实现主要提供了两种方法
- 继承
Thread()
类 - 实现
Runnable
接口
接下来从这两个方面进行说明相关知识。
继承 Thread()
类
写一个类直接继承 Thread()
类,然后重写Thread()
类的run()
方法,调用其start()
方法即可启动线程。
package com.blog.article2;/** * @func 继承Thread实现多线程 * @author 张俊强~ * @time 2017/10/25 13:12 * */public class ArticleOne { public static void main(String[] args){ MyThread mt1=new MyThread("线程一"); MyThread mt2=new MyThread("线程二"); mt1.start(); //启动线程 mt2.start(); }}/*---------------核心代码-------------------*/class MyThread extends Thread{ public String threadName; public MyThread(String threadName){ this.threadName=threadName; } /*--------- 重写 run() 方法 ------------*/ public void run() { while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(threadName + "正在下载文件……"); } }}/*---------------end-------------------*/
实现Runnable
接口
写一个类实现Runnable
接口,然后实现其run()
方法即可。
启动线程首先实例化一个Thread
,并传入自己的MyThread
实例即可,调用Strat()
方法即可。
package com.blog.article2;public class ArticleTwo { public static void main(String[] args) { MyThread mt1=new MyThread("线程一"); MyThread mt2=new MyThread("线程二"); new Thread(mt1).start(); //启动线程 new Thread(mt2).start(); }}/*---------------核心代码-------------------*/class MyThread implements Runnable{ public String threadName; public MyThread(String threadName){ this.threadName=threadName; } // 实现接口的抽象方法 public void run() { while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(threadName + "正在下载文件……"); } }}/*---------------end-------------------*/
我们看一下Thread()
类的源码看看有什么发现没有。
public class Thread implements Runnable { //……………… private Runnable target; //……………… public Thread(Runnable target) { init(null, target, "Thread-" + nextThreadNum(), 0); } //……………… @Override public void run() { if (target != null) { target.run(); } } //………………}
我们发现Thread()
类也是实现了Runnable
接口,并实现了run()
方法。
在Thread()
类中的run()
方法中,还是调用了我们写的MyThread
实例的run()
方法。
一般写到多线程都会有一个非常经典的窗口卖票的例子,将在下一篇博客中介绍。午安 ^_^ ~
阅读全文
0 0
- JAVA中实现多线程的两种方式
- JAVA中实现多线程的两种方式
- JAVA中实现多线程的两种方式
- Java中实现多线程的两种方式
- Java实现多线程的两种方式
- Java实现多线程的两种方式
- Java多线程实现的两种方式
- Java 多线程实现的两种方式
- Java多线程的两种实现方式
- JAVA多线程实现的两种方式
- java 实现多线程的两种方式
- Java实现多线程的两种方式
- JAVA多线程实现的两种方式
- Java实现多线程的两种方式
- Java的两种多线程实现方式
- java多线程实现的两种方式
- Java实现多线程的两种方式
- Java多线程-实现多线程的两种方式
- ios-自定义大头针的掉落效果
- UVALive
- [路由] -- Yii2 url地址美化与重写[2.0版本]
- ccf 201709-3 JSON查询
- Openvswitch GRE实现Kubernetes网络模型 和 flannel 实现Kubernetes网络模型 的不错的博客地址
- Java中实现多线程的两种方式
- dubbo简单demo
- MapReduce:详解Shuffle过程
- vagrant-安装教程及常见问题
- C++中,new/delete和malloc/free的区别
- 面试题——逻辑题
- cuda编程之 __syncthreads()
- MyBatis操作mysql配置和获取插入记录的自增主键
- js 工具类