黑马程序员Java类之异常与线程(Thread)

原创 2012年03月29日 11:23:14

---------------------- android培训java培训、期待与您交流! ----------------------

 基本要点

1、线程实现的两种方式:一种是继续Thread类,另外一种是实现Runable接口。

2、设计模式:在Thread中实现多线程时也是调用run方法,这个是代理模式。

3、进程线程区别:进程是正在执行的程序,是现代操作系统的基石;线程基石进程中的独立控制单元,进程中至少有一个线程,Java VM 启动的时候会有一个进程java.exe。该进程中至少一个线程负责java程序的执行。而且这个线程运行的代码存在于main方法中。该线程称之为主线程。

 

 下面看一个继承Thread的例子

 

package horse;
/**这是一个继承Thread类
 * 被Testthread实现
 */
public class thread extends Thread {
	private String name;
	public thread(){}
	public thread(String){
		this.name = name;
	}
	//重写run()方法
	public void run(){
		for(int i=1;i<30;i++)
			System.out.println(name+"运行"+i);
	}
}

Thread的测试类

package horse;
/**这是一个测试thread的类
 * @param args
 */
public class Testthread {	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		thread t1 = new thread("asdf"); 
		thread t2 = new thread("zxcv");
		//这里启动线程掉用户start()方法,但实际还是run()
		t1.start();
		t2.start();
	}
}

这个是实现Runnable的例子

package horse;
/**这是实现Runnable的类
 */
public class Rthread implements Runnable{
	private String name;
	public Rthread(){}
	public Rthread(String name){
		this.name = name;
	}
	//重写run()方法
	public void run(){
		for(int i=1;i<10;i++)
			System.out.println(name+"运行"+i);
	}
}
package horse;
/**这是一个测试现实接口Runnble的类
 * @param args
 */
public class TestRunnble {	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Rthread r1 = new Rthread("线程r1");
		Rthread r2 = new Rthread("线程r2");
		Thread t1 = new Thread(r1);
		Thread t2 = new Thread(r2);
		t1.start();
		t2.start();
	}
}


总结:

名称

实现接口

继承父类

特点

避免单继承的局限性,适合多个相同程序代码的线程处理同义资源

java中一个子类只能继承一个父类不具备扩展

区别

代码置于接口子类的run()中,利于资源共享,代码和数据独立

线程代码在Thread子类的run()中

 ---------------------- android培训java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima

分析Java线程中断机制stop和interrupted的用法

1.引言当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停...
  • cyljbq
  • cyljbq
  • 2014年12月22日 18:03
  • 1785

Thread线程类的详细解释

概述  软件包   类  使用  树  已过时  索引  帮助    JavaTM 2 Platform Standard Ed. 5.0    上一个类   下一个类 框架    无框架   ...
  • lzabcde
  • lzabcde
  • 2016年01月14日 10:23
  • 2137

线程类Thread的API接口分析系列之interrupt()

一直对Thread.interrupt()接口不是太清楚,之前以为是直接中止指定线程的接口,后来仔细了解,发现并不是,而是只是在jvm中设置了指定线程的状态值为“中止”,但是并不主动去中止线程,如何处...
  • qq838642798
  • qq838642798
  • 2017年03月07日 18:02
  • 310

Java线程的join方法测试

将子线程合并到主线程,子线程执行完主线程才执行,相当于方法调用。
  • Leon_ang
  • Leon_ang
  • 2017年05月22日 14:57
  • 559

Java并发编程系列之七:正确终止与恢复线程

前面提到了stop()、suspend()等方法在终止与恢复线程的弊端,那么问题来了,应该如何正确终止与恢复线程呢?这里可以使用两种方法:interrupt()方法和使用boolean变量进行控制。在...
  • u011116672
  • u011116672
  • 2016年04月02日 17:27
  • 5992

线程异常处理 重启

线程的异常处理不能像普通程序一样出现异常后抛出然后由创建并启用该线程的主线程try catch后进行异常处理,而是只能由该子线程自己try catch自己的异常,比如该子线程中连接数据库或者操作文件,...
  • liuyuqin1991
  • liuyuqin1991
  • 2016年03月24日 14:35
  • 2346

多线程Thread类常用api

Thread类核心api 线程的创建  Thread() Thread(String name) Thread(Runnable target) Thread(String name,Run...
  • HappyArthur
  • HappyArthur
  • 2016年08月02日 16:19
  • 288

通过继承Thread类的方式创建两个线程

8、通过继承Thread类的方式创建两个线程,在Thread构造方法中指定线程的名字,并将这两个线程的名字打印出来。 public class MyThread extends Thread{ pu...
  • xiaoye142034
  • xiaoye142034
  • 2017年09月30日 13:46
  • 1179

13.6 Thread类自定义线程类

package cn.chen.thread; /* * * 线程: * 多线程: * 一个java程序只是有两个线程: * 一个是主线程负责main方法代码执行,一个是垃圾回收器线程...
  • qq_21904665
  • qq_21904665
  • 2016年11月15日 19:57
  • 568

Java如何捕获线程异常?

首先,我们要知道,在Java中,线程中的异常是不能抛出到调用该线程的外部方法中捕获的。 为什么不能抛出到外部线程捕获? 因为线程是独立执行的代码片断,线程的问题应该由线程自己来解决,而不要委托到外部。...
  • qq_30698633
  • qq_30698633
  • 2017年08月10日 13:04
  • 178
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员Java类之异常与线程(Thread)
举报原因:
原因补充:

(最多只允许输入30个字)