欢迎访问宙启技术站
智能推送

多线程编程中常用函数的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实现。通过使用这些函数,我们能够更加灵活地控制和管理线程的执行。