| void start() | ①使此线程开始执行 ②Java虚拟机调用此线程的run方法。 |
|---|---|
| void run() | 如果这个线程使用单独的Runnable运行对象构造,则调用该Runnable对象的run方法;否则,此方法不执行任何操作并返回。 |
| static Thread currentThread() | 返回对当前正在执行的线程对象的引用。 |
| String getName() | 返回此线程的名称。 |
| void setName(String name) | 将此线程的名称更改为等于参数 name 。 |
| Thread(String name) | 分配一个新的 Thread对象。 |
| static void yield() | 对调度程序的一个暗示,即当前线程愿意放弃处理器的使用权。 |
| void join() | 等待调用这个方法的线程执行结束才继续当前线程。 即”插队” |
| static void sleep(long millis) | 使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。 需要处理异常 |
| boolean isAlive() | 测试这个线程是否活着。 |
| int getPriority() | 返回此线程的优先级。 |
| void setPriority(int newPriority) | 更改此线程的优先级。 |
package vip.zdkk.java;/*** @author: zdkk* @create 2022-05-11 21:32** 测试Thread类方法* 1. start(): 启动当前线程,调用此线程的run()方法* 2. run(): 通过重写Thread中run(),将线程要执行的操作声明在此方法中* 3. currentThread(): 静态方法,返回调用当前方法的线程* 4. getName(): 获取当前线程的名字* 5. setName(): 设置当前线程的名字* 6. Thread(String name): 创建线程对象并命名* 7. yield(): 释放当前CPU的执行权* 8. join(): 在线程A中调用线程B的join(),此时线程A进行阻塞状态,直至线程B完全执行完后线程A才结束阻塞状态* 9. stop(): 已过时,执行时强制结束当前线程* 10. sleep(long millis): 静态方法,强制让当前线程等待(睡眠)指定时间* 11. isAlive(): 判断当前线程是否还存存活* 12. getPriority(): 获取当前线程的优先级* 13. setPriority(): 设置线程的优先级,高优先级的线程要抢占低优先级线程的执行权,但高优先级只是高概率被先执行,不是一定会被先执行*** 线程优先级* MIN_PRIORITY = 1* NORM_PRIORITY = 5* MAX_PRIORITY = 10*/public class ThreadMethodTest {public static void main(String[] args) {HelloThread h1 = new HelloThread();h1.setName("线程1");h1.setPriority(Thread.MIN_PRIORITY);h1.start();HelloThread h2 = new HelloThread("线程2");h2.setPriority(Thread.MAX_PRIORITY);h2.start();Thread.currentThread().setName("主线程");System.out.println(Thread.currentThread().getName());for (int i = 0; i < 100; i++) {if ((i % 2) == 0) {System.out.println(Thread.currentThread().getName() + " " + Thread.currentThread().getPriority() + " " + i);}if (i == 20) {try {h2.join();} catch (InterruptedException e) {e.printStackTrace();}}}System.out.println(h2.isAlive());}}class HelloThread extends Thread {public HelloThread(){}public HelloThread(String name) {super(name);}@Overridepublic void run() {// setName("线程1");for (int i = 0; i < 100; i++) {if ((i % 2) == 0) {try {sleep(10);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + " " + getPriority() + " " + i);}if ((i % 20) == 0) {yield();}}}}
