#列表
测试线程是否处于活动状态。 上述方法是被Thread对象调用的。下面的方法是Thread类的静态方法。
package com.javabase;
//实现多线程的第二种方式: 实现runnable接口
public class RunableDemo3 implements Runnable {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName());
RunableDemo3 r1=new RunableDemo3();
//new了Thread以后, 线程状态:新建
Thread t1=new Thread(r1);
t1.setName("自定义线程名字-t1");
//最高10, 最低1, 默认5
//优先级别越高,抢到CPU的概率越大
t1.setPriority(10);
//执行start以后,线程状态:就绪
//new了Thread以后, 线程状态:新建
Thread t2=new Thread(r1);
t2.setName("自定义线程名字-t2");
//最高10, 最低1, 默认5
t2.setPriority(1);
Thread t3=new Thread(r1);
t3.setName("自定义线程名字-t3");
//最高10, 最低1, 默认5
//优先级别越高,抢到CPU的概率越大
t3.setPriority(10);
t2.start();
t1.start();
t3.start();
}
//执行run方法,线程状态:运行
public void run() {
// TODO Auto-generated method stub
System.out.println("RunableDemo>>run");
System.out.println(Thread.currentThread().getName());
/**
* Thread.yield( )方法:
使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一定会执行其他线程而该线程在下一次中不会执行到了。
用了yield方法后,该线程就会把CPU时间让掉,让其他或者自己的线程执行(也就是谁先抢到谁执行)
*/
Thread.yield();
System.out.println("RunableDemo>>run--2");
System.out.println(Thread.currentThread().getName());
}
}
main
RunableDemo>>run
自定义线程名字-t3
RunableDemo>>run
自定义线程名字-t1
RunableDemo>>run–2
自定义线程名字-t3
RunableDemo>>run–2
自定义线程名字-t1
RunableDemo>>run
自定义线程名字-t2
RunableDemo>>run–2
自定义线程名字-t2
wait和notify
- wait和notify 是Object上的方法
- sleep是Thread类里面的方法
- sleep不会释放锁
- wait会释放锁
- 多线程中,所有的锁,都是指对象锁
package com.zz.thread;
/**
* @Description: java类作用描述
* @Author: Bsea
* @CreateDate: 2019/9/21$ 20:35$
*/
public class Test5 {
public static void main(String[] args) {
Test5 test5=new Test5();
Thread t1=new Thread(
new Runnable(){
@Override
public void run() {
test5.t1();
}
}
);
Thread t2=new Thread(
new Runnable(){
@Override
public void run() {
test5.t2();
}
}
);
t1.start();
t2.start();
};
public synchronized void t1(){
try {
System.out.println("开始等待");
wait();
System.out.println("被叫醒");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public synchronized void t2(){
System.out.println("开始叫醒");
notify();
}
}