快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

如何实现多线程-线程的创建

今天就跟大家聊聊有关如何实现多线程-线程的创建,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

为大通等地区用户提供了全套网页设计制作服务,及大通网站建设行业解决方案。主营业务为成都网站建设、网站设计、大通网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

                                                           线程的创建方式

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

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

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

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

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方法

class MyCallable implements Callable{
    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接口就是需要有返回值时用到

看完上述内容,你们对如何实现多线程-线程的创建有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


网站栏目:如何实现多线程-线程的创建
文章地址:http://6mz.cn/article/gjodid.html

其他资讯