Java多线程

Java多线程,第1张

线程的定义  程序(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();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/788468.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存