Java中线程编程实现的常见函数及示例
Java中线程编程是一种非常重要的技能,因为它是实现并发程序的一种常见方法。在这篇文章中,我们将介绍Java中线程编程实现的常见函数及示例。
1. start()函数
在Java中,线程启动的第一个函数是start()。它是Thread类的函数,用于启动一个新的线程。例如,下面是一个简单的示例:
public class MyThread extends Thread {
public void run() {
System.out.println("Hello from " + Thread.currentThread().getName());
}
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
在这个示例中,我们创建了一个MyThread类,它扩展了Thread类,并重写了run()函数。当我们调用thread.start()时,就会执行MyThread类中的run()函数。
2. join()函数
join()函数是一个Thread类的函数,它在调用线程上等待一个线程终止。例如,下面是一个示例:
public class MyThread extends Thread {
public void run() {
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Hello from " + Thread.currentThread().getName());
}
public static void main(String[] args) throws InterruptedException {
MyThread thread = new MyThread();
thread.start();
thread.join();
System.out.println("Hello from main thread");
}
}
在这个示例中,我们创建了一个名为MyThread的类,它扩展了Thread类,并在其中实现了run()函数。当我们启动线程并调用thread.join()时,主线程将被阻塞,直到MyThread线程终止。
3. sleep()函数
sleep()函数是线程类的一个静态函数,它使当前线程进入休眠状态,暂时放弃CPU的处理器时间,让其他线程有机会执行。例如:
public class MyThread extends Thread {
public void run() {
try {
for (int i = 0; i < 10; i++) {
System.out.print(i + " ");
sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
在这个示例中,我们创建了一个MyThread类,它扩展了Thread类,并在其中实现了run()函数。在这个函数中,我们使用sleep()函数来使线程休眠1秒钟。
4. interrupt()函数
interrupt()函数是Thread类的一个函数,它用于中断线程。例如,下面是一个示例:
public class MyThread extends Thread {
public void run() {
try {
while (!isInterrupted()) {
System.out.println("Hello from " + Thread.currentThread().getName());
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread stopped.");
}
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread.interrupt();
}
}
在这个示例中,我们创建了一个MyThread类,它扩展了Thread类并实现了run()函数。在这个函数中,我们使用isInterrupted()函数检查线程是否被中断,如果没有,就打印一条消息并休眠1秒钟。在主线程中,我们等待5秒钟,然后中断MyThread线程。
5. notify()和wait()函数
notify()和wait()函数是用于线程之间通信的函数。它们必须在同步块中使用,因此它们通常与synchronized关键字一起使用。例如:
public class MyThread {
public void printNumber() throws InterruptedException {
synchronized (this) {
for (int i = 0; i <= 10; i++) {
System.out.println(i + " ");
notify();
wait();
}
}
}
public static void main(String[] args) throws InterruptedException {
MyThread thread = new MyThread();
Thread t1 = new Thread(() -> {
try {
thread.printNumber();
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread t2 = new Thread(() -> {
try {
thread.printNumber();
} catch (InterruptedException e) {
e.printStackTrace();
}
});
t1.start();
t2.start();
t1.join();
t2.join();
}
}
在这个示例中,我们创建了一个名为MyThread的类,它有一个printNumber()函数。在这个函数中,我们使用synchronized关键字来确保线程之间的同步。在循环中,我们打印数字并使用notify()函数来通知另一个正在等待的线程,然后调用wait()函数阻塞当前线程,直到收到另一个线程的通知。
这些是Java中常见的线程编程函数和示例。线程编程是一项复杂的技能,但如果你掌握了上述基础,你就可以开始构建出更加复杂的多线程应用程序。
