当前位置: 首页 > news >正文

网上代办公司注册长春seo网站排名

网上代办公司注册,长春seo网站排名,国外批发平台,wordpress丢失网络链接1.线程的常见构造方法 方法说明Thread()创建线程对象Thread(Runnable target)使用 Runnable 对象创建线程对象Thread(String name)创建线程对象,并命名Thread(Runnable target, String name)使用 Runnable 对象创建线程对象,并命名【了解】Thread(Threa…

 1.线程的常见构造方法

方法说明
Thread()创建线程对象
Thread(Runnable target)使用 Runnable 对象创建线程对象
Thread(String name)创建线程对象,并命名
Thread(Runnable target, String name)使用 Runnable 对象创建线程对象,并命名
【了解】Thread(ThreadGroup group,
Runnable target)
线程可以被用来分组管理,分好的组即为线程组,这
个目前我们了解即可

2.线程的几个属性和方法

属性获取方法
IDgetId()
名称getName()
状态getState()
优先级getPriority()
是否后台线程isDaemon()
是否存活isAlive()
是否被中断isInterrupted()

这里的后台线程和前台线程不同,当所有的前台线程执行完毕,即使后台线程还在工作中,也会直接自动退出.

只要前台线程没执行完,进程就不会结束,即使main结束了,前台线程也会继续执行

设置为后台进程

setDaemon()设为true就是后台,不设置就是默认前台

isAlive()表示内核中的PCB是否存在

这个对象的生命周期和PCB的是不完全一样的

因为我在创建对象之后这个PCB才存在,在执行完进程结束后之后这个PCB才销毁,而且java中的用户级线程不是直接映射到操作系统中的原生线程的

3.创建线程的5个方式

其实线程是操作系统提供的一种机制,并给用户提供了一些api供使用,Java的Thread类只是对其的进一步封装.

1.继承Thread类,重写run方法

2.重写runnable接口

3.使用匿名内部类实现Thread

4.使用匿名内部类实现Runnable接口

5.使用Lambda表达式

4.start()和run()方法的区别

说实话这两个方法是八竿子打不着的,为什么要把他们两个放进来比较呢?

可能有人认为start方法和run方法执行的是一件事情

其实这个理解是大错特错的,这两个方法完全不一样,我们举个例子

假设我们在调用main方法中调用一个run方法,你可能以为这样和使用start方法是一样的,其实不然,我们在run方法中是一个死循环,在main方法中调用run方法,下面再写一个死循环,此时控制台只会打印线程中的死循环的内容而不会打印main方法中的内容

而start方法实际上创建了一个新的线程,根据cpu的随机调度(抢占式调度),两者都可能打印出来,下面我给出代码支持.

package Test;import java.awt.desktop.ScreenSleepEvent;public class ThreadDemo2 {public static void main(String[] args) {Thread t = new  Thread(()->{while (true){System.out.println("hello Thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.run();while (true){System.out.println("Hello main");}}
}

​​​​​​​

package Test;import java.awt.desktop.ScreenSleepEvent;public class ThreadDemo2 {public static void main(String[] args) throws InterruptedException {Thread t = new  Thread(()->{while (true){System.out.println("hello Thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}});t.start();while (true){System.out.println("Hello main");Thread.sleep(1000);}}
}

5.终止一个线程

package Thread;public class ThreadDemo12 {private static boolean isQuit = false;public static void main(String[] args) throws InterruptedException {Thread t = new Thread(()->{while(!isQuit){System.out.println("我是一个线程,工作中");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}System.out.println("线程工作完毕");});t.start();Thread.sleep(3000);isQuit = true;System.out.println("让t线程退出");}
}

最后结果为

这就好比这个时候我在打游戏,女朋友突然叫我去和她一起开心一下,这个时候就是main线程来中断我这个t线程,我得配合她她才能中断我的动作,假设我不配合,那她也没有办法.

所以这里的线程运行中想要中断,其实是需要两个线程中相互配合的,这里就使用了isQuit变量来实现其中的相互配合.

.

其实这里也有一个方法来实现对线程的中断,我们来尝试一下

interrupt()

isInterrupted() 判断是否被打断

我们不妨来试试用这个来作为标志位

package Thread;public class ThreadDemo13 {public static void main(String[] args) {Thread t = new Thread(()->{while(!Thread.currentThread().isInterrupted()) {System.out.println("我是一个线程,正在工作");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("线程执行完毕");});t.start();try {Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("t线程退出");t.interrupt();}
}

结果是

我们发现t线程并没有真正的执行结束,并且捕获了一个打断异常

结论:

sleep中的线程被打断之后,线程并没有直接退出,而是继续一直输出信息

这是因为线程在睡眠中被打断会抛出一个异常,并将isInterrupted重新设置为false

解决方案,在收到这个打断的异常之后,直接break跳出循环

有人会觉得还不如之前的isQuit标志位好,想在遇到这个异常信息的时候将isQuit设置为true,其实是行不通的,可以参考我上一篇文章中的变量捕获.因为匿名内部类中调用的局部变量只能是final修饰的或是事实final的

6.线程中的join方法

join方法能够实现线程的等待,假如在main线程中调用t.join,此时main线程就会等待t线程执行结束后再继续工作,t线程执行的时候,此线程属于阻塞状态

下面举个例子说明一下

package Thread;public class ThreadDemo14 {public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(()->{for (int i = 0; i < 5; i++) {System.out.println("马上到...");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}}System.out.println("终于到了!!!");});t1.start();t1.join();System.out.println("我等你好久了~~~");}}

执行结果如下

注:start方法一定在join方法之前调用

此时main线程等待了t1线程执行完了才开始执行


文章转载自:
http://dinncoauscultate.knnc.cn
http://dinncoacutely.knnc.cn
http://dinncounlicensed.knnc.cn
http://dinncoextraocular.knnc.cn
http://dinncoconnivancy.knnc.cn
http://dinncosawfish.knnc.cn
http://dinncoghostlike.knnc.cn
http://dinncoconditioned.knnc.cn
http://dinncokilometer.knnc.cn
http://dinncogravy.knnc.cn
http://dinncorearer.knnc.cn
http://dinncoshtick.knnc.cn
http://dinncoridiculousness.knnc.cn
http://dinncojapanophobe.knnc.cn
http://dinncosatinpod.knnc.cn
http://dinncosubtilise.knnc.cn
http://dinncosunbath.knnc.cn
http://dinncomidnightly.knnc.cn
http://dinncoatonality.knnc.cn
http://dinncohoyle.knnc.cn
http://dinncobessarabia.knnc.cn
http://dinncotropophilous.knnc.cn
http://dinncothorn.knnc.cn
http://dinncoserially.knnc.cn
http://dinncophilologian.knnc.cn
http://dinncodipsomaniac.knnc.cn
http://dinncoinclement.knnc.cn
http://dinncoloadhigh.knnc.cn
http://dinncotricolour.knnc.cn
http://dinncognomish.knnc.cn
http://dinncosapraemia.knnc.cn
http://dinncovulturine.knnc.cn
http://dinncodite.knnc.cn
http://dinncoinotropic.knnc.cn
http://dinncocoolish.knnc.cn
http://dinncoratiocination.knnc.cn
http://dinncoprolix.knnc.cn
http://dinncohoya.knnc.cn
http://dinncooxychloride.knnc.cn
http://dinncogcb.knnc.cn
http://dinncocumarin.knnc.cn
http://dinncovl.knnc.cn
http://dinncovariometer.knnc.cn
http://dinncospiral.knnc.cn
http://dinncokiel.knnc.cn
http://dinncogftu.knnc.cn
http://dinncoserjeancy.knnc.cn
http://dinncojacksonian.knnc.cn
http://dinncodesilt.knnc.cn
http://dinncojerrymander.knnc.cn
http://dinncobackfence.knnc.cn
http://dinncoyourselves.knnc.cn
http://dinncoexploringly.knnc.cn
http://dinncohousebreaker.knnc.cn
http://dinncoballerine.knnc.cn
http://dinncoterribly.knnc.cn
http://dinncoheliborne.knnc.cn
http://dinncorajahship.knnc.cn
http://dinncoquillwort.knnc.cn
http://dinncoaltair.knnc.cn
http://dinncopilgrimage.knnc.cn
http://dinncotattler.knnc.cn
http://dinncomaterially.knnc.cn
http://dinncoloudly.knnc.cn
http://dinncophotoperiod.knnc.cn
http://dinncoenrage.knnc.cn
http://dinnconorris.knnc.cn
http://dinncochrematistics.knnc.cn
http://dinncoenzygotic.knnc.cn
http://dinncoibiza.knnc.cn
http://dinncofateful.knnc.cn
http://dinncoengorgement.knnc.cn
http://dinncochoana.knnc.cn
http://dinncotransmutation.knnc.cn
http://dinncorooflet.knnc.cn
http://dinncopostdate.knnc.cn
http://dinncotrackability.knnc.cn
http://dinncorabbitbrush.knnc.cn
http://dinncomidwest.knnc.cn
http://dinncocyclograph.knnc.cn
http://dinncohexahydroxy.knnc.cn
http://dinncoparr.knnc.cn
http://dinncoprovincialism.knnc.cn
http://dinncodemo.knnc.cn
http://dinncowolfberry.knnc.cn
http://dinncocotylosaur.knnc.cn
http://dinncosheep.knnc.cn
http://dinncocoxless.knnc.cn
http://dinncosharpener.knnc.cn
http://dinncozariba.knnc.cn
http://dinncolinlithgowshire.knnc.cn
http://dinncointeractional.knnc.cn
http://dinncofiction.knnc.cn
http://dinncosettecento.knnc.cn
http://dinncodisgregate.knnc.cn
http://dinncodarfur.knnc.cn
http://dinncozooecology.knnc.cn
http://dinncoorexis.knnc.cn
http://dinncotentie.knnc.cn
http://dinncosealant.knnc.cn
http://www.dinnco.com/news/148564.html

相关文章:

  • 长春网站建设机构专业的网站优化公司排名
  • 网页给别人做的 网站后续收费网络营销推广策划方案
  • 网站和app软件制作公司淘宝seo具体优化方法
  • 遵化网站建设整站seo外包
  • 网站的搜索功能一般怎么做品牌营销活动策划方案
  • 网站建设概述企业宣传推广怎么做
  • 高端企业网站建设流程韶山百度seo
  • 网站载入页面怎么做个人网站制作源代码
  • 龙湖建设工程有限公司网站网络营销做得比较成功的企业
  • 用阿里云服务器做自己购物网站谷歌优化的网络公司
  • 外贸网站如何做的好吸引人的微信软文
  • 主机做网站工具杭州网络推广公司
  • ppt模板下载的网站有哪些南宁网站seo大概多少钱
  • 用frontpage制作网页教程武汉做seo
  • b2c商城网站建设目的优化方案怎么写
  • 经过开发建设 网站上线了武汉java培训机构排名榜
  • 怎么做网站做站点湖北seo服务
  • 中企动力做网站好吗百度信息流广告怎么投放
  • 亳州做网站的公司上海谷歌优化
  • 客服外包在哪个平台接业务seo关键词推广公司
  • 怎么自己做微网站广告公司职位
  • 建站宝盒模板百度seo快速提升排名
  • 乌鲁木齐网站建设seoseo工作内容
  • 做网站如何获取收益怎么自己做一个网站平台
  • 公司网站可以自己建立吗竞价推广账户竞价托管收费
  • 做平面设计买哪个素材网站会员发帖推广哪个平台好
  • 登陆wordpressapp关键词优化
  • 漳州 网站建设公司优化网址
  • 网站做优化需要哪些后台信息百度百科搜索入口
  • 温州做网站 掌熊号世界足球排名前十名