**
Thread类的有关法
**
- void start(): 启动线程,并执行对象的run()方法
- run(): 线程在被调度时执行的操作,将创建的线程要执行的操作声明在此方法中
- String getName(): 返回线程的名称
- void setName(String name):设置该线程名称
- static Thread currentThread():
返回当前线程。在Thread子类中就是this,通常用于主线程和Runnable实现类 - static void yield():线程让步:1.暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程2.若队列中没有同优先级的线程,忽略此方法
- join() :当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到
join()方法加入的线程执行完为止。低优先级的线程也可以获得执行 - static void sleep(long millis) :(指定时间:毫秒)
1.令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重新排队。
2.抛出InterruptedException异常 - stop(): 强制线程生命期结束,不推荐使用
- 10.boolean isAlive():返回boolean,判断线程是否还活着
public class ThreadMethodTest1 {
public static void main(String[] args) {
//设置main线程的名字
Thread.currentThread().setName("主线程是main");
// //方式一:设置分线程名字
// Method m = new Method();
// //4.
// m.setName("分线程01");
//方式二:通过Method的构造器,设置分线程的名字
Method m = new Method("分线程是02");
//1.
m.start();
for (int i = 0; i < 100; i++) {
if (i % 2== 0){
//3.、 5.
System.out.println(Thread.currentThread().getName()+":"+i);
}
if (i == 30){
try {
m.join();//7.
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
System.out.println(m.isAlive());//10.
}
}
class Method extends Thread{
public Method(){
}
public Method(String threadName){
super(threadName);
}
//2.
@Override
public void run() {
for (int i = 0; i < 100; i++) {
if (i % 2== 0){
try {
sleep(10);//8.
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+":"+i);
}
if (i == 50){
//6.
this.yield();
}
}
}
}