现在的位置: 首页 > 综合 > 正文

多线程与进程的理解

2018年01月31日 ⁄ 综合 ⁄ 共 1134字 ⁄ 字号 评论关闭

Java中有一个多线程的概念一直无法理解,最近找到一个比喻 : 

客人来了要沏茶给他喝,这时候你可以采用以下两种方法:

单线程:

多线程:

由此可见,多线可以提高程序运行效率,尤其是程序块比较多时.

在Java中实现多线程有2种手段,一种是继承Thread类,另一种是实现Runnable接口.

继承Thread类:

class MyThread extends Thread{	// 继承Thread类,作为线程的实现类
	private String name ;		// 表示线程的名称
	public MyThread(String name){
		this.name = name ;		// 通过构造方法配置name属性
	}
	public void run(){	// 覆写run()方法,作为线程的操作主体
		for(int i=0;i<10;i++){
			System.out.println(name + "运行,i = " + i) ;
		}
	}
};
public class ThreadDemo{
	public static void main(String args[]){
		MyThread mt1 = new MyThread("线程A ") ;	 // 实例化对象
		MyThread mt2 = new MyThread("线程B ") ;	 // 实例化对象
		mt1.start() ;	// 启动多线程
		mt2.start() ;	// 启动多线程--[注意]不能用mt2.run(),这样只是调用线程主体,并没有启动线程
	}
};


实现Runnable接口:


class MyThread implements Runnable{	// 实现Runnable接口,作为线程的实现类
	private String name ;		// 表示线程的名称
	public MyThread(String name){
		this.name = name ;		// 通过构造方法配置name属性
	}
	public void run(){	// 覆写run()方法,作为线程 的操作主体
		for(int i=0;i<10;i++){
			System.out.println(name + "运行,i = " + i) ;
		}
	}
};
public class RunnableDemo{
	public static void main(String args[]){
		MyThread mt1 = new MyThread("线程A ") ;	 // 实例化对象
		MyThread mt2 = new MyThread("线程B ") ;	 // 实例化对象
		Thread t1 = new Thread(mt1) ;		// 实例化Thread类对象
		Thread t2 = new Thread(mt2) ;		// 实例化Thread类对象
		t1.start() ;	// 启动多线程
		t2.start() ;	// 启动多线程
	}
};

实现Runnable接口比继承Thread有以下优势:

避免单继承
代码能被多线程共享

抱歉!评论已关闭.