写在前面
昨天的文章中,我们说过了多线程知识join方法的具体使用方法,不知道是否有人看到了,那么今天我们要来学习另外一个多线程知识了。
yield方法,也是多线程编程的一个使用非常频繁,且非常关键的一个方法,下面一起来学习一下吧。
学习多线程之yield方法
yield方法,本身其实是一个native方法,不同于join方法,join方法的源头是Thread类下的一个方法,而yield方法是一个native方法,虽然由java来使用,但并不是由java来实现,是由外部封装的原始方法。
下面我们来说一下这个方法的用法吧。
yield方法提供了一个暂停线程的功能,说详细点就是,将当前线程暂停,将服务器本身的资源让给其他线程来运行。
让我们来看一下yield到底是如何使用的吧。代码如下所示:
public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(new Runnable() { @SneakyThrows @Override public void run() { for (int i = 0; i < 10; i++){ if (i != 5){ Thread.yield(); } System.out.println(i); } } }); Thread thread1 = new Thread(new Runnable() { @SneakyThrows @Override public void run() { for (int i = 0; i > -10; i--){ System.out.println(i); } } }); thread.start(); thread1.start(); }
通过代码,我们可以得到以下的结果。
0 -1 -2 -3 -4 -5 -6 -7 -8 -9 0 1 2 3 4 5 6 7 8 9
代码执行完成后,我们就要解释一下这个代码是什么意思了,单看代码恐怕有些难以理解。
代码中,我们首先是创建了两个线程,一个线程来打印1到10的数字。另外一个线程来打印负1到负10。
在线程1中打印到5的时候开始执行yield方法,服务器暂停了该线程,继而运行线程2。
所以才得到了这个结果。
总结
今天我们学习了多线程中的yield方法,了解了一下和join方法有些不同之处,大家是否有所收获呢,明天我们接着来学习其他的多线程方法,共同成长吧。