Java中 实现多线程成的三种方式(继承,实现,匿名内部类)
------------------------------------------------------------------------------------------------------------
/** 第一种方式:继承Thread类 * 1. 定义一个类,然后让该类继承Thread类 * 2. 重写run方法 * 3. 创建定义的这个类的对象 * 4. 启动线程 */ //继承Thread类 public class MyThread extends Thread{ public MyThread() {} public MyThread(String name) {
super(name);
} //run方法中封装的应该是要被线程执行的代码 ,run方法中代码的原则,一般存方的都是比较耗时的代码
public void run (){ for (int i = 0; i < 200; i++) { System.out.println(Thread.currentThread().getName() + "---" + i);
}
}
} //测试方法 private static void Test() { // 创建对象
MyThread mt1 = new MyThread();
MyThread mt2 = new MyThread(); //启动线程
// public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
mt1.start();
//mt1.start();// 线程的启动只能是一次
mt2.start(); }
------------------------------------------------------------------------------------------------------------
/** 第二种方式:实现Runnable接口
避免了单线程带来的困扰
* (1): 创建一个类,让该类实现Runnable接口 * (2): 重写run方法 * (3): 创建该类的对象 * (4): 创建Thread类的对象,然后把3中的对象作为参数传递给Thread * (5): 启动线程 */ //实现Runnable接口 public class MyThread2 implements Runnable { public MyThread2() {
super();
} public void run() { for(int x = 0 ; x < 200 ; x++){ System.out.println(Thread.currentThread().getName() + "---" + x);
}
}
} //测试方法 private static void Test2() { // 创建MyThread的对象
MyThread2 mt = new MyThread2();
// 创建Thread类的对象,然后把3中的对象作为参数传递给Thread
// public Thread(Runnable target)
Thread t1 = new Thread(mt,"张飞");
Thread t2 = new Thread(mt,"关羽");
Thread t3 = new Thread(mt,"刘备");
// 启动线程
t1.start() ;
t2.start() ;
t3.start() ;
}
------------------------------------------------------------------------------------------------------------
/** 第三种方式:使用匿名内部类的方式实现
很少见
* new 类名/接口名() { * 方法重写 ; * } ; */ //测试方法 //匿名内部类 @Test
private static void Test3() { new Thread() {
public void run() {
System.out.println("线程执行了。。。。。。。");
}
}.start();
}
------------------------------------------------------------------------------------------------------------
Java中 实现多线程成的三种方式(继承,实现,匿名内部类)的更多相关文章
- Java中从控制台输入的三种方式
我们最熟悉的从控制台读取一个字符或者一个字符串都知道用Scanner,那么除了Scanner还有没有其他的呢,答案是有的,我们来看看. System.in.read() System.in.read( ...
- JAVA中使用LDAP登录的三种方式
搜索中关于java 登录ldap,大部分会采用 cn=xxx,ou=xxx,dc=xxx的方式,此处的cn是用户的Display Name,而不是account,而且如果ou有多层,比如我们的OU就 ...
- 如何实现有返回值的多线程 JAVA多线程实现的三种方式
可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口.执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable ...
- Java中获取键盘输入值的三种方法
Java中获取键盘输入值的三种方法 Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...
- Java反射获取class对象的三种方式,反射创建对象的两种方式
Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName ...
- 在Tomcat中部署web项目的三种方式
搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...
- Tomcat中部署web应用的三种方式
Tomcat中部署web应用的三种方式(静态部署) 第一种,针对war或解压后的war,最为常用的是直接操作webapp目录,将完整的war包或者web应用直接放到webapp目录下.使用 ...
- spring中创建bean对象的三种方式以及作用范围
时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...
- 【java多线程】多线程的创建三种方式--笔记
申明:线程的概念以及进程的相关概念,可以参考网络上其他资料,这里只讨论多线程是怎么实现. 一.多线程的简单理解 明白什么是多线程,小生通俗一点的理解为:在一个程序里,我想同时让这个程序完成多个任务. ...
随机推荐
- 使用Python和Perl绘制北京跑步地图
当你在一个城市,穿越大街小巷,跑步跑了几千公里之后,一个显而易见的想法是,如果能把在这个城市的所有路线全部画出来,会是怎样的景象呢? 文章代码比较多,为了不吊人胃口,先看看最终效果,上到北七家,下到南 ...
- 分享个刚写好的 android 的 ListView 动态加载类,功能全而代码少。
(转载声明出处:http://www.cnblogs.com/linguanh/) 简介: 该ListView 实现动态加载数据,为了方便用户充分地自定义自己的数据源.点击事件,等核心操作, ...
- Swift - 重写UIKit框架类的init初始化方法(以UITabBarController为例)
原来写了篇文章讲UITabBarController的用法,当时是从UIViewController跳转到UITabBarController页面,代码如下: 1 self.presentViewCo ...
- 相克军_Oracle体系_随堂笔记005-Database buffer cache
本章主要阐述SGA中的Database buffer cache. Buffer cache { 1.pin (读写瞬间的状态) 2.clean 3.dirty 4.unused } --Databa ...
- 4.Struts2转向类型详解
struts2中提供了多种视图转向类型,类型由type属性指定,如: dispatcher:请求转发(默认值) redirect:重定向到页面 redirectAction:重定向到Action pl ...
- idea 自动提示生成 serialVersionUID
from: http://tonycody.blog.51cto.com/8421818/1401422 Intellij IDEA 默认没启用这个功能. Setting->Inspection ...
- .net 将List序列化成Json字符串
将List类型转化为Json,是我们平常开发时最常见的了.在使用中,有很多种方法,也可以使用. 第一种 第三方组件:Newtonsoft.Json.dll //转化成Json Newtonsoft.J ...
- C#新手常犯的错误
虽然这篇post的标题是新手常犯的错误,实际上很多有经验的程序员也经常犯这些错误,我整理了一下,就当是笔记.1.遍历List的错误,比如如下代码: List<String> strList ...
- ASP.NET MVC4 Forms 登录验证
Web.config配置: 在<system.web>节下: <authentication mode="Forms"> <forms loginUr ...
- SQL高性能查询优化语句(总结)
SQL 高性能查询优化语句,一些经验总结 1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where ...