多线程编程中常用函数的Java实现
发布时间:2023-12-08 05:59:30
多线程编程是指在一个程序中同时运行多个线程,以完成多个任务。Java提供了丰富的多线程编程工具和函数,下面是常用的几个函数的Java实现:
1. sleep()函数:sleep()函数使当前线程进入指定的时间间隔的休眠状态。它的使用方式为Thread.sleep(long millis),其中millis表示休眠的时间,以毫秒为单位。下面是一个例子:
public class SleepExample {
public static void main(String[] args) {
System.out.println("开始");
try {
// 休眠3秒
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("结束");
}
}
2. join()函数:join()函数用于等待线程结束。它的使用方式为thread.join(),其中thread表示要等待的线程。下面是一个例子:
public class JoinExample {
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(() -> {
try {
// 休眠3秒
Thread.sleep(3000);
System.out.println("子线程执行完毕");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
thread.start();
thread.join();
System.out.println("主线程执行完毕");
}
}
3. wait()和notify()函数:wait()函数使线程进入等待状态,并释放对象的锁。notify()函数用于唤醒正在等待的线程。它们的使用方式为:wait()和notify()必须在同步代码块或同步方法中使用,且必须对同一个对象进行操作。下面是一个例子:
public class WaitNotifyExample {
public static void main(String[] args) {
Object lock = new Object();
Thread thread1 = new Thread(() -> {
synchronized (lock) {
try {
System.out.println("线程1等待");
lock.wait();
System.out.println("线程1被唤醒");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread thread2 = new Thread(() -> {
synchronized (lock) {
try {
System.out.println("线程2等待");
lock.wait();
System.out.println("线程2被唤醒");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread thread3 = new Thread(() -> {
synchronized (lock) {
System.out.println("唤醒全部线程");
lock.notifyAll();
}
});
thread1.start();
thread2.start();
thread3.start();
}
}
4. yield()函数:yield()函数使当前线程放弃当前的CPU资源,让其他线程有机会运行。它的使用方式为Thread.yield()。下面是一个例子:
public class YieldExample {
public static void main(String[] args) {
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 5; i++) {
System.out.println("线程1执行第" + (i + 1) + "次");
Thread.yield();
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 5; i++) {
System.out.println("线程2执行第" + (i + 1) + "次");
Thread.yield();
}
});
thread1.start();
thread2.start();
}
}
以上是多线程编程中常用的几个函数的Java实现。通过使用这些函数,我们能够更加灵活地控制和管理线程的执行。
