Java 多线程实现(Thread与Runnable的区别)
一、Thread与Runnable的联系**
使用Runnable实现多线程能更好,能避免单继承局限,Thread与Runnable之间存在联系。
Thraed类的定义形式:
public class Thread extends Object implements Runnable.
Thread类是Runnable接口的子类;因此Thread类覆写run()方法。
Public void run(){ if (target != nu11) {targrt.run();}}PublicThread(Runnable
target){ init(nu11,target,”Thread-” + nextThreadNum(),0);}
Private Runnable target;
线程类的继承结构:
在多线程的处理上使用的是代理设计模式,除以上关系之外,在开发中使用Runnable有一个特点,使用Runnable实现多线程的程序类能更好描述出数据共享概念。
目标:
产生若干个线程进行同一数据的处理操作。
二、Thread
范例:使用Thread实现数据操作。
Package cn .mldn.demo; class MyThread extends Thread { // 是一个线程的主体类 Private int ticket = 10 ; // 一共10张票
@Override public void run() { // 所有的线程从此开始执行
For (int x = 0; x < 20; x++) {if (this.ticket > 0) {System.out.println(“卖票,ticket = “ + this.ticket --);}Public class TestDmo {public static void main(String[ ] args) {new MyThread9().start();
new MyThread9().start(); new MyThread9().start();}}
此时要启动三个线程进行卖票处理。
结果变为各自卖各自三张票。
三、Runnable
范例:使用Runnable实现共享
Package cn .mldn.demo; class MyThread implements Runnable { // 是一个线程的主体类Private int ticket = 10 ; // 一共10张票
@Override public void run() { // 所有的线程从此开始执行
For (int x = 0; x < 20; x++) {if (this.ticket > 0) {System.out.println(“卖票,ticket = “ + this.ticket --);}
Public class TestDmo {public static void main(String[ ] args) {new MyThread9(mt).start();
new MyThread9(mt).start();
new MyThread9(mt).start();}}
卖票内存关系