多线程的两种实现方式
2015-11-14 17:54
363 查看
java中多线程可以采用两种方式实现,分别是继承Thread类重写run方法和实现Runnable接口重写run方法。
继承Thread类重写run方法举例如下:
实现Runnable接口重写run方法举例如下:
两种方式均可实现多线程,但一般操作时选择实现Runnable接口方式,因为java的类单继承、接口多实现机制;其次,接口实现方式可以实现共享数据。如下:
该程序主函数创建Runnable的对象rt,并将rt传递至Thread的两个对象t1、t2的构造函数中。类对象的存放地址是java的堆内存,t1、t2操作的是唯一同一片内存地址的同一对象,即实现了数据的共享。
由于数据的共享,也造成了java多线程的安全性问题。
继承Thread类重写run方法举例如下:
/* 需求:在主线程之外继承Thread类创建两独立线程,分别打印1至50. */ class ThreadTest extends Thread{ public void run(){ for(int i = 1; i <= 50; i++) System.out.println(Thread.currentThread().getName() + ": "+i); } } public class Imp_Thread { public static void main(String[] args){ ThreadTest tt1 = new ThreadTest(); ThreadTest tt2 = new ThreadTest(); tt1.start(); tt2.start(); } }
实现Runnable接口重写run方法举例如下:
/* 需求:在主线程之外实现Runnable接口创建两独立线程,分别打印1至50 */ class RunnableTest implements Runnable{ public void run(){ for(int i = 1; i <= 50; i++){ System.out.println(Thread.currentThread().getName() + ": "+i); } } } public class Imp_Thread { public static void main(String[] args){ RunnableTest rt = new RunnableTest(); Thread t1 = new Thread(rt); Thread t2 = new Thread(rt); t1.start(); t2.start(); } }
两种方式均可实现多线程,但一般操作时选择实现Runnable接口方式,因为java的类单继承、接口多实现机制;其次,接口实现方式可以实现共享数据。如下:
class RunnableTest implements Runnable{ private int i = 1; public void run(){ for(; i <= 50; i++){ System.out.println(Thread.currentThread().getName() + ": "+i); } } } public class Imp_Thread{ public static void main(String[] args){ RunnableTest rt = new RunnableTest(); Thread t1 = new Thread(rt); Thread t2 = new Thread(rt); t1.start(); t2.start(); } } 运行结果: Thread-0: 1 ... Thread-1: 49 Thread-0: 50
该程序主函数创建Runnable的对象rt,并将rt传递至Thread的两个对象t1、t2的构造函数中。类对象的存放地址是java的堆内存,t1、t2操作的是唯一同一片内存地址的同一对象,即实现了数据的共享。
由于数据的共享,也造成了java多线程的安全性问题。
相关文章推荐
- C#调用本机摄像头
- 下拉框选中 默认选中(从数据库比较,用户本身的值
- Unity3D内置运行函数
- 最长单调递增子数列
- 用户友好输入界面
- 使用AIDL实现进程间的通信
- Linux下安装Eclipse
- Oracle导入dmp备份文件到不同的表空间中
- 第32讲 实践项目——输出小星星5
- HDU 2795 Billboard 线段树单点更新
- Qt中的字符串类QString
- javascript利用FSO对XML文件操作类
- Oracle导入dmp备份文件到不同的表空间中
- 关于图像识别的一些资料收集
- 《JavaScript高级程序设计(第3版)》读书笔记(一)
- extern的使用和危害
- poj 2584 T-Shirt Gumbo
- Java HMACShA256
- 创建策略(Creation Policy )和生命周期(Life Cycle)
- 服务器性能调优