Java多线程

线程的定义

 程序(program)

程序(program)是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。是静态的代码
它以某些程序设计语言编写,运行于某种目标结构体系上。

进程(process)

进程(process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
程序是指令、数据及其组织形式的描述,进程是程序的实体。

线程(thread)

线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
线程共享同一个进程中的结构。

创建多线程的方式

继承Thread类

//通过继承Thread实现多线程
class ThreadTest1 extends Thread {
    public ThreadTest1() {

    }

    //重写run方法
    @Override
    public void run() {
        System.out.println(getName() + "被调用。");
    }
}

public class Thread1 {
    public static void main(String[] args) {
        ThreadTest1 threadTest1 = new ThreadTest1();
        ThreadTest1 threadTest2 = new ThreadTest1();
        ThreadTest1 threadTest3 = new ThreadTest1();
        threadTest1.setName("线程一");
        threadTest2.setName("线程二");
        threadTest3.setName("线程三");
        threadTest1.start();
        threadTest2.start();
        threadTest3.start();
    }
}

实现Runnable接口

//通过实现Runnable接口实现多线程
class ThreadTest2 implements Runnable {

    //重写run方法
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "被调用。");
    }
}


public class Thread2 {
    public static void main(String[] args) {
        ThreadTest2 threadTest = new ThreadTest2();
        Thread thread1 = new Thread(threadTest);
        Thread thread2 = new Thread(threadTest);
        Thread thread3 = new Thread(threadTest);
        thread1.setName("线程一");
        thread2.setName("线程二");
        thread3.setName("线程三");
        thread1.start();
        thread2.start();
        thread3.start();


    }
}

实现Callable接口

class ThreadTest3 implements Callable {
    //重写call方法
    public ThreadTest3() {

    }

    @Override
    public Object call() throws Exception {
        return Thread.currentThread().getName() + "被调用。";
    }
}

public class Thread3 {
    public static void main(String[] args) {
        ThreadTest3 thread1 = new ThreadTest3();
        FutureTask futureTask = new FutureTask(thread1);
        new Thread(futureTask).start();
        String str;

        {
            try {
                str = (String) futureTask.get();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            } catch (ExecutionException e) {
                throw new RuntimeException(e);
            }
        }
        System.out.println(str);
    }


}

使用线程池

class ThreadTest4 implements Runnable {

    //重写run方法
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "被调用。");
    }
}
public class Thread4 {
    public static void main(String[] args) {
        ExecutorService  service = Executors.newFixedThreadPool(10);
//        ThreadPoolExecutor service1 = (ThreadPoolExecutor) service;

        service.execute(new ThreadTest4());
        service.execute(new ThreadTest4());
        service.shutdown();
    }
}

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值