大家好,我是Thread,我的英文名字是Thread。虽然我现在名气很大,好像人人都认识我,但我的身世却是悲惨离奇的。我出生在一个小山村,那是与世隔绝的世外桃源,却在小小年纪就展现出与众不同的性格。例如:当身边的小伙伴还沉浸在玩泥巴的快乐中时,我开始思考如何避开雨天出行带来的障碍?当身边的同龄人还沉浸在夕阳下奔跑的时候,我已经开始思考为什么太阳会东升西落?而我们人类为什么生活在地球上?这可以看出。那时,我是众人眼中的“怪人”,村里的猫狗走路都会躲着我。但是妈妈理解我。她知道,这个少年,容貌不凡,骨骼惊人。他一定是武林奇才。在我18岁的时候,我母亲把我收养给了她的一个远房亲戚。第一个母亲:传承的脉络接下来我给大家介绍一下我的出生过程,也是我的人生初体验。创建方法——线程最原始的创建方法,只需要继承Thread类,重写run()方法即可。实现代码如下://创建方法一:继承ThreadclassMyThreadextendsThread{@Overridepublicvoidrun(){System.out.println("Hello,thread~");}}//测试publicclassThreadExample{publicstaticvoidmain(String[]args){//创建一个线程Threadthread=newMyThread();//启动一个线程thread.start();}}上面的变体创建一个线程方法略显繁琐,我们也可以使用匿名对象方法直接重写run()创建Thread类时的方法,实现代码如下://变体一:匿名创建线程Threadt1=newThread(){@Overridepublicvoidrun(){System.out.println("Threadvariant");}};//启动线程t1.start();继承ThreadJava语言设计的缺点是单继承,所以继承Thread后,不能再继承其他类。换句话说,如果我一直和我的亲生母亲(Thread延伸)在一起,那么我就得不到良好的教育,所以我长大后注定是个普通人。这可能就是妈妈把我收养给远房亲戚的原因。酒吧。二娘:用Java语言实现Runnable,虽然不能实现多继承,但是可以实现多接口,所以我住在二娘家,算得上是鱼在水里了。创建方法2类似于继承Thread类。实现Runnable接口就是重写run()方法。具体实现代码如下:publicclassThreadExample2{//创建方法二:实现Runnable接口staticclassMyThreadimplementsRunnable{@Overridepublicvoidrun(){System.out.println("你好,线程~");}}//代码测试publicstaticvoidmain(String[]args){//创建一个Runnable子类MyThreadmyThread=newMyThread();//创建一个线程Threadthread=newThread(myThread);//启动线程thread.start();}}变体一:匿名Runnable有实现上面Runnable接口的更简单的实现方法。我们可以使用匿名Runnable来创建一个线程,如下代码所示://Variant1:AnonymousRunnableThreadt2=newThread(newRunnable(){@Overridepublicvoidrun(){System.out.println("我是线程变体方法~");}});//启动线程t2.start();变体方法二:Lambda在JDK中创建Runnable8后,我们可以使用Lambda表达式来操作代码,所以我们也有更简单的创建匿名Runnable类的实现方法,如下代码所示://变体2:使用LambdaanonymousRunnablemethodThreadt3=newThread(()->{System.out.println("Iamvariant2~");});//启动线程t3.start();注意:以上实现代码只支持JDK1.8+版本。三娘:村里的首富。虽然我的前两个妈妈对我很好,但是对于我这样一个威风八面、骨瘦如柴的年轻人,将来要拯救宇宙,维护世界和平,在中国混日子也是免不了的,局限性太大了太好了,所以我一直想去大洋彼岸追梦,但是“前二”妈妈的财力不足以支持我这样做。但是,我的第二个家庭与村里首富的家庭是亲密的朋友。在了解了我的志向后,他们的家人愿意帮助我去大洋彼岸追梦。于是二娘一边感激一边让我当场认最有钱的人家当干爹干妈。就这样,我有了第三个妈妈。创建方式3前两种创建方式虽然不错,但是不能接收线程执行后的返回值,所以在JDK1.5之后增加了Callable和Future来接收线程执行后的返回值。具体实现代码如下:importjava.util.Random;importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.FutureTask;/***线程创建示例3*/publicclassCreateThreadExample3{//创建方式三:实现Callable接口staticclassMyCallableimplementsCallable
