我是靠谱客的博主 调皮黑裤,最近开发中收集的这篇文章主要介绍1、java线程(thread)实现多线程的三种方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

进程(process)可以包含多个线程

三种创建方式:

  1. Thread class        继承Thread类
    不建议使用:避免OOP单继承局限性。
  2. Runnable接口        实现Runnable接口
    推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使用
    发现问题,多个对象,操作同一个资源的情况下,线程不安全
  3. Callable接口        实现Callable接口

注意:线程开启不一定立即执行,由CPU调度执行。

1、自定义线程类继承Thread类,重写run()方法,编写线程执行体,创建线程对象,调用start()方法启动线程。

        不建议使用:避免OOP单继承局限性。

class PrimeThread extends Thread {
         long minPrime;
         PrimeThread(long minPrime) {
             this.minPrime = minPrime;
         }

         public void run() {
             // compute primes larger than minPrime
              . . .
         }
}
创建一个线程并启动它运行:

     PrimeThread p = new PrimeThread(143);
     p.start();

2、实现Runnable接口,重写run()方法,编写线程执行体,创建线程对象,创建一个Thread对象然后调用start()方法启动线程(代理),new Thread(testRunnable2).start()    。

        推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使用。

例如,买火车票时的票数控制对象等。

class PrimeRun implements Runnable {
         long minPrime;
         PrimeRun(long minPrime) {
             this.minPrime = minPrime;
         }

         public void run() {
             // compute primes larger than minPrime
              . . .
         }
}

创建一个线程并启动它运行: 

     PrimeRun p = new PrimeRun(143);
     new Thread(p).start();

     new Thread(p,"小明").start();
     new Thread(p,"小红").start();

3、实现Callable接口(了解即可,一般不用),实现Callable接口,需要返回值类型,重写call方法,需要抛出异常,创建目标对象,创建执行服务:,提交执行:,获取结果:,关闭服务:。

class TestCallable implements Callable<Boolean> {

         @Override
        public Boolean call() throws Exception {
         . . .
        return true;
    }
}

创建一个线程并启动它运行:

TestCallable t1 = new TestCallable();
TestCallable t2 = new TestCallable();
TestCallable t3 = new TestCallable();

//创建执行服务
ExecutorService ser = Executors.newFixedThreadPool(3);
//提交执行
Future<Boolean> r1 = ser.submit(t1);
Future<Boolean> r2 = ser.submit(t2);
Future<Boolean> r3 = ser.submit(t3);
//获取结果
boolean rs1 = r1.get();
boolean rs2 = r2.get();
boolean rs3 = r3.get();
//关闭服务
ser.shutdown();

最后

以上就是调皮黑裤为你收集整理的1、java线程(thread)实现多线程的三种方法的全部内容,希望文章能够帮你解决1、java线程(thread)实现多线程的三种方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部