常见线程方法及线程状态
创始人
2024-06-03 06:33:35
0

常见线程方法

我们来认识几个线程的方法

sleep() yield() join()

package com.tianhao;public class Sleep_Yield_Join {public static void main(String[] args) {//testSleep();//testYield();testJoin();} /*Sleep,意思就是睡眠,当前线程暂停一段时间让给别的线程去运行。Sleep是怎么复活的?由你的睡眠时间而定,等睡眠到规定的时间自动复活*/static void testSleep() {new Thread(()->{for(int i=0; i<100; i++) {System.out.println("A" + i);try {Thread.sleep(500);//TimeUnit.Milliseconds.sleep(500)} catch (InterruptedException e) {e.printStackTrace();}}}).start();}/*Yield,就是当前线程正在执行的时候停止下来进入等待队列(就绪状态,CPU依然有可能把这个线程拿出来运行),回到等待队列里在系统的调度算法里头呢还是依然有可能把你刚回去的这个线程拿回来继续执行,当然,更大的可能性是把原来等待的那些拿出一个来执行,所以yield的意思是我让出一下CPU,后面你们能不能抢到那我不管*/static void testYield() {new Thread(()->{for(int i=0; i<100; i++) {System.out.println("A" + i);if(i%10 == 0) Thread.yield();}}).start();new Thread(()->{for(int i=0; i<100; i++) {System.out.println("------------B" + i);if(i%10 == 0) Thread.yield();}}).start();}/*join, 意思就是在自己当前线程加入你调用Join的线程(),本线程等待。等调用的线程运行完了,自己再去执行。t1和t2两个线程,在t2的某个点上调用了t1.join,它会跑到t1去运行,t2等待t1运行完毕继续t1运行(自己join自己没有意义) */static void testJoin() {Thread t1 = new Thread(()->{for(int i=0; i<100; i++) {System.out.println("A" + i);try {Thread.sleep(500);//TimeUnit.Milliseconds.sleep(500)} catch (InterruptedException e) {e.printStackTrace();}}});Thread t2 = new Thread(()->{try {t1.join();} catch (InterruptedException e) {e.printStackTrace();}for(int i=0; i<100; i++) {System.out.println("A" + i);try {Thread.sleep(500);//TimeUnit.Milliseconds.sleep(500)} catch (InterruptedException e) {e.printStackTrace();}}});t1.start();t2.start();}
}

线程的状态

JAVA的6中线程状态:

  1. NEW : 线程刚刚创建,还没有启动
  2. RUNNABLE : 可运行状态,由线程调度器可以安排执行
    • 包括READY和RUNNING两种细分状态
  3. WAITING: 等待被唤醒
  4. TIMED WAITING: 隔一段时间后自动唤醒
  5. BLOCKED: 被阻塞,正在等待锁
  6. TERMINATED: 线程结束

如下图:

在这里插入图片描述

synchronized:经过操作系统的调度

线程状态测试代码:

package com.tianhao;import com.tianhao.SleepHelper;import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.LockSupport;public class ThreadState {static class MyThread extends Thread {@Overridepublic void run() {System.out.println("2: " + this.getState());for (int i = 0; i < 10; i++) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}System.out.print(i + " ");}System.out.println();}}public static void main(String[] args) throws Exception {Thread t1 = new MyThread();System.out.println("1: " + t1.getState());t1.start();t1.join();System.out.println("3: " + t1.getState());Thread t2 = new Thread(() -> {try {LockSupport.park();System.out.println("t2 go on!");TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {e.printStackTrace();}});t2.start();TimeUnit.SECONDS.sleep(1);System.out.println("4: " + t2.getState());LockSupport.unpark(t2);TimeUnit.SECONDS.sleep(1);System.out.println("5: " + t2.getState());final Object o = new Object();Thread t3 = new Thread(()->{synchronized (o) {System.out.println("t3 得到了锁 o");}});new Thread(()-> {synchronized (o) {SleepHelper.sleepSeconds(5);}}).start();SleepHelper.sleepSeconds(1);t3.start();SleepHelper.sleepSeconds(1);System.out.println("6: " + t3.getState());}
}

相关内容

热门资讯

母亲节赞美母爱励志唯美诗歌 母爱是灿烂的阳光,当我们失败的时候,母爱总会给我们带来的温暖和鼓励!那母亲节赞美母爱励志唯美诗歌有哪...
赞美家乡的诗歌 赞美家乡的诗歌(精选10首)  在学习、工作或生活中,说到诗歌,大家肯定都不陌生吧,诗歌是表现诗人思...
歌颂抗击疫情的诗歌 歌颂抗击疫情的诗歌歌颂抗击疫情的诗歌1  抗击新肺炎,一场没有硝烟的战争  活跃着一群身影  他们的...
终究不是一路人诗歌 终究不是一路人诗歌  磁场不合的人,终究不是一路人  有些人,  你见到第一眼,就感觉很舒服;  有...
诗歌写作方法有哪几种 诗歌写作方法有哪几种  诗歌是一种抒情言志得文学体裁。《毛诗—大序》记载:“诗者,志之所之也。在心为...
我想去远方诗歌 我想去远方诗歌  去一个我从未走过的地方  没有楼阁 没有烦恼  那布满灰尘的喧嚣  有太多太多的争...
描写国庆节的诗歌范文5篇 在日常的学习、工作、生活中,大家都听说过或者使用过一些比较经典的诗歌吧,诗歌是按照一定的音节、韵律的...
描写感恩的文艺诗歌精简版5篇 感恩常在,有没有哪件小事,一不小心就戳中了你的心,有没有哪个人,猝不及防就走进你的心房。下面是小编为...
泰戈尔感恩母亲的诗歌 泰戈尔感恩母亲的诗歌  导语:泰戈尔感恩生命,顺理而下,当然感恩直接哺育婴儿长大成人的母亲。以下小编...
有这样一群人诗歌 有这样一群人诗歌  城市街道上有这样一群人  他们的衣着很特别,很显然,是统一的橙色加银黄  他们的...
江城梅花引·老来难诗歌 江城梅花引·老来难诗歌  江城梅花引·老来难(依韵和柳知章行《江城梅花引·老龄化》)  人人皆说老来...
闻王昌龄左迁龙标遥有此寄全诗...   导语:闻王昌龄左迁龙标遥有此寄这首诗是李白听闻王昌龄路过五溪这个地方而作的,将自己的祝福随着风陪...
歌颂母亲的诗歌 歌颂母亲的诗歌(15篇)  无论在学习、工作或是生活中,许多人都接触过一些比较经典的诗歌吧,诗歌具有...
小学生诗歌朗诵春天 小学生诗歌朗诵春天  春天像小姑娘,花枝招展的,笑着,走着。  1、《春天的集会》  冬天刚过,  ...
诗词之源早于《诗经》 诗词之源早于《诗经》  大量史料说明,中国诗歌的星宿之海应上溯一千年,虞舜时代的《卿云歌》和《南风歌...
在我最想你的时候爱情诗歌 在我最想你的时候爱情诗歌  在我最想你的时候  默然夕拾  夜深了  几乎绣花针掉到地上  都能发出...
谢灵运山水诗对李白的创作影响 谢灵运山水诗对李白的创作影响  东晋诗人谢灵运,作为中国古典诗歌山水诗派的开创者之一,在晋宋之交,为...
永远的守巢人诗歌_歌颂老师   又到毕业季,又有不少的孩子即将离开那个呵护了他们三年的小乐园,开始第一次学会和朋友们说再见。下面...
小学生抗疫情诗歌 小学生抗疫情诗歌  无论是身处学校还是步入社会,大家一定没少看到经典的诗歌吧,诗歌语言言简义丰,具有...
忘不掉你的承诺诗歌 忘不掉你的承诺诗歌  当自己心中的那个他走了之后,  让人最难忘记的是“记忆”  因为,  那一段记...