---------------------- android培训、java培训、期待与您交流! ----------------------
黑马程序员-多线程
进程:是一个正在执行中的程序,每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫控制单元。
线程:就说进程中独立的控制单元,线程在控制着进程的执行。
每一个进程中至少有一个线程在执行。
主线程:当JVM启动的时候会有一个进程java.exe运行,该进程中至少有一个线程负责Java程序的执行,而且这个线程的代码存在于main方法中,该线程称为主线程。
1.定义一个线程。
通过对api的查找功能我们知道Java提供了对线程这类事物的描述,就是Thread类。Thread类用于描述线程,该类定义了一个功能,用于存储线程要运行的代码,该存储功能就是run()方法。所以,创建线程的第一种方法就是继承Thread类。
首先,定义继承Thread类。
然后,复写Thread类中的run()方法,将自定义的代码存放到线程。
最后,调用线程的start()方法,启动线程和调用run()方法。
class Duo extends Thread
{
String name;
Duo(String name)
{
this.name=name;
}
public void run()
{
for(int x=0;x<100;x++)
System.out.println(name+"进程二----"+x);
}
}
class Zhu
{
public static void main(String[] args)
{
Duo d=new Duo("asda");
d.start();
for(int x=0;x<100;x++)
System.out.println("进程一----"+x);
}
}
2.线程在运行中有多种状态
冻结状态:通过使用sleep()和wait()的方式进入冻结状态,处于该状态的进程将临时停止,使用sleep()方法进入冻结,可以在sleep()方法的实参中设置冻结时间,单位为毫秒,若使用wait()方法进入的冻结,则必须使用notify()方法进行唤醒操作。
消亡状态:表示一个线程从此结束,可以使用stop()方法实现,或者等到run()方法结束后自动消亡进程。
临时状态:具备运行资格,但是没有执行权,是等待执行权的一种状态。
3.定义线程的名称。
每一个线程都具有自己的默认名称,表示为Thread-0;(0为编号,从0开始。)
使用getName()方法可以获取线程名称。
使用setName()方法可以设置线程名称。
static Thread currentThread()可以获取当前线程对象。
Thread.currentThread().getName()等价于this.getName(),都可以获取当前线程对象的线程名称。
class Duo extends Thread
{
private String name;
Duo(String name)
{
super(name);
}
public void run()
{
for(int x=0;x<100;x++)
System.out.println(Thread.currentThread().getName()+"进程----"+x);
}
}
class Zhu
{
public static void main(String[] args)
{
Duo d1=new Duo("d1");
Duo d2=new Duo("d2");
Duo d3=new Duo("d3");
d1.start();
d2.start();
d3.start();
}
}
设置线程的名称还可以使用构造函数的初始化来完成。
class Duo extends Thread
{
private String name;
Duo(String name)
{
this.name=name;
}
public void run()
{
for(int x=0;x<100;x++)
System.out.println(name+"进程----"+x);
}
}
class Zhu
{
public static void main(String[] args)
{
Duo d1=new Duo("d1");
Duo d2=new Duo("d2");
Duo d3=new Duo("d3");
d1.start();
d2.start();
d3.start();
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------