java的线程比较简单,首先分清线程和进程的定义
进程:内存中运行的一个应用程序、
线程:进程中的实体,可以理解为可执行的程序片段
创建线程的分类::创建线程有两种方式,1,通过继承thread类来实现创建一个线程,2.通过实现runnable接口来实现创建一个线程类,
运行线程的分类::运行线程有两中方式,1,若是继承thread类的直接调用thread类中的start()方法来运行线程 。2 若是实现runnable接口。先实例化一个thread对象,实现了runnable接口的类作为thread参数传给thread,然后通过thread来调用start方法。
具体代码如下
第一种方式:::
/**
* 创建一个线程,通过继承thread方式来创建
* @author Administrator
*
*/
public
class
CreateThread1
extends
Thread{
public
void
run(){
for
(
int
i =
0
;i<
100
;i++){
System.out.println(
"继承thread类线程::"
+i);
}
}
public
static
void
main(String[] args) {
CreateThread1 thread1 =
new
CreateThread1();
/**
* 启动线程的方式,java中的main函数如果调用其他的方法的时候首先是会先把调用的函数走完之后再回来接着走下面的程序,但是如果main函数中调用了线程的方法
* 的时候就是先执行一会线程,又接着执行一会下面的程序,是这样交叉着来执行的,
*/
thread1.start();
for
(
int
i =
0
;i<
100
;i++){
System.out.println(
"进程运行:::"
+i);
}
}
}
/**
* 创建线程的第二种方式::(实现runnable接口)
*
* @author Administrator
*
*/
public
class
CreateThread2
implements
Runnable{
public
void
run() {
for
(
int
i =
0
;i<
100
;i++){
System.out.println(
"实现runnable接口的线程:::"
+i);
}
}
public
static
void
main(String[] args) {
CreateThread2 thread2 =
new
CreateThread2();
//因为thread2是继承了runnable接口,不能直接调用start方法,必须要先实例化一个thread线程,同时将实现了runnable的线程作为参数传给新创建的实例thread
//然后通过新创建的线程来调用start()方法
Thread thread =
new
Thread(thread2);
thread.start();
for
(
int
i =
0
;i<
100
;i++){
System.out.println(
"程序运行的线程::"
+i);
}
}
}
综合比较:实现runnable接口的方式比继承thread类的方式来创建线程要好的多,原因是因为实现接口比较灵活,除了实现这个runnable接口之后我还可以实现其他的接口,当然我可以可以继承某个类,相对于单单只能继承thread类要更加的多可用性