一、线程名称
1.在Thread类中,可以通过getName()方法获得线程名称,通过setName()方法设置线程名称
2.线程的名称一般在启动线程前设置,但也允许为已经运行的线程设置名称。允许雷哥Thread对象有相同的名称,但应该避免
3.如果程序没有为线程指定名称,则系统会自动为线程分配一个名称。
class MyThread implements Runnable
{
public void run(){
for(int i=0;i<3;i++){
System.out.println(Thread.currentThread().getName()
+"运行,i=" +i) ;//取得当前线程名称
}
}
}
public class ThreadNameDemo
{
public static void main(String args[]){
MyThread mt = new MyThread() ; //实例化Runnable子类对象
new Thread(mt).start() ; //系统自动设置线程名称
new Thread(mt,"线程-A").start() ; //手工设置线程名称
new Thread(mt,"线程-B").start() ; //手工设置线程名称
new Thread(mt).start() ; //系统自动设置线程名称
new Thread(mt).start() ; //系统自动设置线程名称
}
}
执行结果:
二、当前线程
1.程序可以通过currentThread()方法取得当前正在运行的线程对象。
2.主方法也是线程,称作:主线程
问题:Java运行时启动多少线程?
答:至少启动两个,每当java执行时,都会启动jvm,每个jvm都会启动一个进程;java中具有垃圾收集机制,GC(垃圾回收机制)
3.判断线程是否启动
class MyThread implements Runnable
{
public void run(){
for(int i=0;i<3;i++){
System.out.println(Thread.currentThread().getName()
+"运行,i=" +i) ;//取得当前线程名称
}
}
}
public class ThreadAliveDemo
{
public static void main(String args[]){
MyThread mt = new MyThread() ; //实例化Runnable子类对象
Thread t = new Thread(mt,"线程") ;
System.out.println("线程开始执行之前--->"+t.isAlive()) ;
t.start();
System.out.println("线程启动之后--->"+t.isAlive()) ;
for(int i=0;i<16;i++){
System.out.println("main运行--->" + i);
}
//代码执行结束
System.out.println("代码执行之后--->"+t.isAlive()) ;
}
}
三、线程的强制运行
join