线程
线程:线程是进程中的一个单元,负责对当前进程中执行的程序,一个进程中至少有一个线程。
Thread类
构造方法:
Thread(String name)
分配新的Thread对象,将其指定的name作为其线程名称。
常用方法:
void strat( ) 使该线程开始执行
void run()该线程要执行的操作
static void sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠
创建线程方式-----继承Thread类
步骤:
- 定义一个继承类Thread
- 重写run方法
- 创建子类对象,就是创建线程对象
- 调用 start方法,开启线程并让线程执行,同时还会告诉jvm去调用run 方法
测试类:
public class D{
public static voidmain(string【 】args){
//创建自定义线程对象
MyTread mt
= new MyThread("新的线程");
//开启新线程
my . start( );
//在主方法中执行for循环
for(int i=0;i<10;i++)
System.out.println("mian线程!"+i)
}
}
}
自定义线程:
public class MyThread eatends Thread{
//定义制定线程名称的构造方法
public MyThread(String name){
super(name);
}
/**
*重写run方法,完成该线程的逻辑
*/
public void run(){
for(int i=0 ;i< 10;i++){
System.out .println(getName( )+":正在执行!”+i)
}
}
}
线程对象调用run方法和调用start方法区别
线程对象调用run方法不开启线程。仅是对象调用方法
线程对象调用start开启线程,并让jvm调用run方法在开启的线程中执行。
获取线程
- Thread.currentThread( )获取当前线程对象
- Thread.currentThread( ).getName( );获取当前对象的名称。
接口 Runnable
创建线程的步骤
1.定义类实现Runnable接口
2.覆盖接口中的run方法
3.创建Thread类的对象
4.讲Runnable接口的子类对象作为参数传递给Thread类的构造函数
5.调用Thread类的start方法开启线程
代码演示
public class D{
public static void main(String [ ] args){
//创建线程执行目标类对象
Runnable runn= new MyyRunnable( );
//将runnable接口的子类对象作为参数传递给Thread类的构造函数
Thread thread = new Thread(runn);
Thread thread2 =new Thread(runn);
//开启线程
thread.start( );
thread2.start( );
for (int i=0;i<10;i++){
System.out.println("main线程:正在执行"+i);
}
}
}
自定义线程执行任务类
public class MyRunnable implements Runnable{
//定义线程要执行的run 方法逻辑
public void run(){
for(int i=0;i<10;i++){
System.out.println("我的线程:正在执行!“+i);
}
}
}
好处
实现Runnable接口,避免了继承Thread类的单继承局限性。覆盖Runnable接口中的run方法,将线程任务代码定义到run方法中。
创建Thread类的对象,只有创建Thread类的对象才可以创建线程。线程任务已被封装到Runnable接口的run方法中,而这个run方法所属于Runnable接口的子类对象,所以将这个子类对象作为参数传递给Thread的构造函数,这样,线程对象创建时就可以明确要运行的线程的任务。