Java中的Thread类函数及其用法介绍
Thread类是Java中的一个非常重要的类,它代表线程。Java中的线程允许我们在同一个程序中同时执行多个代码路径,从而实现多任务。线程可以大大提高程序的执行效率,减少等待时间,提高用户需求的响应速度。在Java中,一个程序必须至少有一个线程,这个线程是主线程。本文将介绍Java中的Thread类函数及其用法。
Thread类函数:
1. start():启动线程,将线程置于可运行状态,并执行run()方法。
2. run():线程体函数,包含线程运行的代码,必须重写。
3. currentThread():返回对当前正在执行的线程对象的引用。
4. setName(String name):设置线程名称。
5. getName():获取线程名称。
6. sleep(long millis):使线程休眠指定的毫秒数,抛出InterruptedException异常。
7. join(long millis):等待该线程终止的时间最长不超过millis 毫秒。
8. isAlive():判断线程是否还处于活动状态。
9. yield():该方法暂停当前正在执行的线程,以便其他线程运行,但并不能保证使得CPU的执行权转移到另一个线程。
10. interrupt():中断线程。如果线程处于阻塞状态,将抛出InterruptedExceptio错误。
11. setPriority(int priority):设置线程的优先级,优先级是一个整数,取值范围是1~10,分别对应Thread中的MIN_PRIORITY和MAX_PRIORITY。
12. getPriority():获取线程的优先级。
Thread类详细使用:
1. 启动线程:
启动线程的方法是调用start()函数。当调用start()函数后,一个新的线程就被创建出来,并且将会执行run() 方法中的代码。start()函数不能被重复调用。
public class MyThread extends Thread {
@Override
public void run() {
System.out.println("MyThread is running!");
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
2. 命名线程:
可以使用setName(String name)函数来为线程命名。线程名称是一个字符串,如果没有通过setName()函数指定线程名称,则系统会自动生成一个名称。
public class MyThread extends Thread {
public MyThread() {
setName("MyThread");
}
@Override
public void run() {
System.out.println(getName() + " " + "is running!");
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
3. 线程休眠:
可以使用sleep(long millis)函数来使线程休眠指定的毫秒数。
public class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(getName() + ":" + i);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
4. 等待线程终止:
可以使用join(long millis)函数来等待线程终止。join()函数会使得当前线程(一般指主线程)等待调用该函数的线程的终止。
public class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(getName() + ":" + i);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
try {
myThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("MyThread is dead!");
}
}
5. 设置优先级:
可以使用setPriority(int priority)函数来设置线程的优先级。线程的优先级越高,则该线程在竞争CPU资源时的优先级就越高。
public class MyThread extends Thread {
public MyThread() {
setPriority(10);
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(getName() + ":" + i);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
以上就是Java中Thread类函数及其用法的详细介绍。线程是Java中重要的概念,掌握线程的使用方法对于Java程序员来说非常重要。
