57java多线程实现(Thread与Runnable的区别)

70 阅读1分钟

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();}}

卖票内存关系