(三十)java多线程一

时间:2023-03-09 08:26:05
(三十)java多线程一

我们通常在电脑中打开的应用称作进程,一个应用就是一个进程,而一个进程里边一般包含多个线程。

系统要为每一个进程分配独立的内存空间,而进程里的多个线程共用这些内存。

我们通常所写的main方法就是一个线程,独立的线程都是顺序执行的,但是多个线程同时存在的时候,却不一定是顺序执行,因为多线程在执行的时候会抢夺系统分配出来的时间片段,具有不确定性。

创建线程有两种方式,一种是继承Thread,另一种是实现Runnable接口,例如下边的例子:

package
demo1;

/**

* @authortuzongxun

*

*/

public
class
ThreadTest3 {

publicstaticvoidmain(String[]
args) {

Thread111 thread111 = newThread111();

Thread222 thread222 = newThread222();

thread111.start();

new
Thread(thread222, "thread222").start();

}

}

classThread111extends Thread
{

@Override

public
void
run() {

for (int i = 0; i <1000; i++) {

System.out.println(this.getName()
+ ":线程1");

}

}

}

classThread222implements Runnable {

@Override

public
void
run() {

for (int i = 0; i <1000; i++) {

System.out.println(Thread.currentThread().getName()
+ ":线程2");

}

}

}

如上代码,创建线程的时候,不论是继承Thread还是实现runnable接口,一般都要重写run方法。

线程启动是调用线程的start方法,线程还有sleep、join、wait等阻塞方法。

线程一般有创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、死亡(dead)五种状态,也称作线程的生命周期。

一般,阻塞状态的线程不能直接变成运行状态,而是会先就绪,然后才会在适当的时机运行。start方法之后,线程就会处于就绪状态。