多线程-线程的创建

互联网 19-8-22
线程的创建方式

总结一下多线程的创建方式,多线程的实现一共四种方法,接下来将详谈一下创建的方式

1、继承Thread类,而后覆写run()方法

2、实现Runnable接口,而后覆写run()方法

3、实现callable接口,而后覆写call<v>方法

4、线程池(后面专门说,因为较复杂)

注意:无论使用哪种方式创建线程,启动线程一律使用Thread类提供的start()方法。

1.继承Thread类覆写run方法

class MyThread extends Thread {     private String title;     private int ticket = 20;       public MyThread(String title) {         this.title = title;     }       public void run() {  //放每个线程的子任务         while (ticket > 0) {             System.out.println("当前线程为"+title+",还剩下"+ticket--+"票");         }     } }   public class ThreadTest {     public static void main(String[] args) {         MyThread myThread1 = new MyThread("黄牛A");         MyThread myThread2 = new MyThread("黄牛B");         MyThread myThread3 = new MyThread("黄牛C");         myThread1.start();         myThread2.start();         myThread3.start();     } }

2.实现Runnable接口覆写run方法

class MyRunnable implements Runnable{     @Override     public void run() {       for(int i =0;i <10;i++){           System.out.println(Thread.currentThread().getName()+"、i="+i);       }     } } public class RunnableTest {     public static void main(String[] args) {        Runnable runnable =new MyRunnable();      //向上转型         new Thread(runnable,"线程A").start();    //设置线程名字         new Thread(runnable).start();     //没有设置线程名字,则是系统默认从 Thread-(0,1,2...)         Thread thread1 = new Thread(runnable);         thread1.setName("线程B");        //调用setName()设置名字         thread1.start();     } }

这里呢顺便介绍了线程名字的创建3种:

(1)在括号后直接加名字

(2)调用setName()设置名字

(3)不设置名字,则是系统默认从Thread-(0,1,2....)

3.实现Callable接口覆写call<V>方法

class MyCallable implements Callable<String>{     private int ticket =20;     @Override     public String call() throws Exception {         while(ticket > 0){             System.out.println(Thread.currentThread().getName()+"还剩下"+ticket--+"票");         }         return "票卖完了,再见";     } } public class CallableTest {     public static void main(String[] args) throws ExecutionException, InterruptedException {         //产生Callable对象         MyCallable myCallable = new MyCallable();         //产生FutureTask对象         FutureTask futureTask = new FutureTask(myCallable);         Thread thread = new Thread(futureTask);         thread.start();         System.out.println(futureTask.get()); //接收Callable对象的返回值     } }

1.先产生Callable对象

2.产生FutureTask对象

3.创建Thread传入FutureTask对象

4. 接收Callable接口的返回值是Future中get()方法

三个创建线程的方式比较

1.继承Thread类有单继承局限,相对而言实现Runnable接口更加灵活,并且Thread类本身也实现了Runnable接口辅助真实线程类

2.实现Runnable接口可以更好的实现程序共享的概念

3.Callable接口就是需要有返回值时用到

以上内容若有明显错误请指出,不胜感激。谢谢!

更多相关内容请访问PHP中文网:JAVA视频教程

以上就是多线程-线程的创建的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 线程
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java泛型中的上界(extend)和下界(super)

相关资讯