码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础知识之多线程(1)

时间:2015-04-18 11:39:10      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

1、认识线程

a) 对于线程来说,容易混淆的还有进程,我们用一个例子来区分它们,每次打开一个word文档,这就是一个进程,一个word中的拼写检查这是一个线程,再如每登陆一个QQ,这是一个进程,QQ中的每一个会话都是一个线程。
b)对于只有一个CPU的电脑来说,一个时间点只有一个进程占用CPU

2、Java中如何实现线程

Java中实现多线程可以采用:继承Thread类,或,实现Runnable接口
a)继承Thread类,这个方式必须覆写run()方法
class 类名称  extends Thread{
	//成员变量
	//成员方法
	public void run(){
		//线程主体
	}
}
小例子:
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


class myThread extends Thread {
	Map<String,? extends Collection<Integer>> map= new HashMap<String,List<Integer>>();
	private String name;
	public myThread(String name){
		this.name  = name;
	}
	public void run(){
		for(int i = 0; i < 10; i++){
			System.out.println(name + "运行,i="+i);
		}
	}
	
}
public class MyThread {
	public static void main(String[] args){
		myThread mt1 = new myThread("线程A");
		myThread mt2 = new myThread("线程B");
		mt1.start();
<span style="white-space:pre">		</span>mt2.start();
	}
}

b)实现Runnable接口,覆写run()方法

public class Thread2 implements Runnable {
	//成员变量
	//成员方法
	public void run(){
		//线程主体
	}
}
小例子:
class A implements Runnable{
	//成员变量
		//成员方法
		private String name;
		public A(String name){
			this.name = name;
		}
		public void run(){
			//线程主体
			for(int i = 0; i < 10; i++){
				System.out.println(name + "运行,i="+i);
			}
		}
}
public class Thread2{
	public static void maim(String[] args){
		A a1 = new A("线程A");
		A a2 = new A("线程B");
		Thread t1 = new Thread(a1);
		Thread t2 = new Thread(a2);
		t1.start();
		t2.start();
	}
}

3、两种方式的区别及使用结论

a)使用Runnable接口可以实现资源的共享,而Thread类不行.
b)避免单继承带来的局限性
在开发中使用Runnable接口是比较合适的

4、线程的状态

  • 创建状态:准备好一个多线程对象,Thread t = new Thread();
  • 就绪状态:调用start()方法,等待CPU调度
  • 运行状态:执行run()方法
  • 阻塞状态:暂时停止执行,可能将资源给其他线程使用
  • 终止状态:线程执行完毕,不再使用
技术分享

Java基础知识之多线程(1)

标签:

原文地址:http://blog.csdn.net/u012437355/article/details/45110985

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!