千家信息网

如何使用Java多线程

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍了如何使用Java多线程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。多线程编程何为多线程,通俗的讲就是让你的代码同时
千家信息网最后更新 2025年02月01日如何使用Java多线程

这篇文章主要介绍了如何使用Java多线程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

多线程编程

何为多线程,通俗的讲就是让你的代码同时干好几件事。

而我们的一个代码文件或者一个项目就是一个进程,而如果我们想提高效率,我们可以多开几个文件进行多进程,也可以在进程中创建多线程(多写几个方法),但是多进程比较耗费资源,所以一般推荐多线程,在代码里,让代码做几个文件做的事。

多线程编程可以让我们的代码拥有更高效率。

线程的工作过程

使用多线程需要先创建一个或者多个线程

然后让线程调用CPU资源,开始运行

然后运行完毕等待所有线程运行完毕

然后删除资源,结束线程

Java线程拥有优先级

优先级就是系统确定线程的调度顺序,但是不执行顺序,因为多线程的执行是具有无序性的。

调度顺序只是系统分配资源的顺序,不分配资源就无法执行。

创建多线程

如何在Java代码中创建多线程,Java内置了用于多线程的库。

1.继承Thread类,重写run()方法

我们需要写一个类A来继承Thread类,并重写run()方法。

run()方法里面放我们需要进行多线程的代码。

然后再在主类中实例化类A的对象,并且调用strat方法。

public  class TheadText  {    public static void main(String[] args) {        //实例化StartThread,并调用start方法使线程动起来        StartThread t1 = new StartThread("一  ");        t1.start();        StartThread t2 = new StartThread("二  ");        t2.start();        StartThread t3 = new StartThread("三  ");        t3.start();        StartThread t4 = new StartThread("四  ");        t4.start();    }}/** * 1.继承Thread类并重写run方法 */ class StartThread extends Thread{     String name;     StartThread(String name){         this.name = name;     }    @Override    public void run() {       System.out.println(name+1);       System.out.println(name+2);       System.out.println(name+3);       System.out.println(name+4);       System.out.println(name+5);     } }

2. 实现接口Runnable接口,实现run方法

使用Runnable接口避免了单继承的局限性,线程类只是实现了 Runnable 接口,还可以继承其他类

public  class TheadText  {    public static void main(String[] args) { StartRunnable startRunnable1 = new StartRunnable("  一  ");        Thread te1 = new Thread(startRunnable1);        te1.start();        StartRunnable startRunnable2 = new StartRunnable("  二  ");        Thread te2 = new Thread(startRunnable2);        te2.start();        StartRunnable startRunnable3 = new StartRunnable("  三  ");        Thread te3 = new Thread(startRunnable3);        te3.start();        StartRunnable startRunnable4 = new StartRunnable("  四  ");        Thread te4 = new Thread(startRunnable4);        te4.start(); }}/** * 2. 实现Runnable接口,实现run方法 */ class StartRunnable implements Runnable{     String name;//     重载一下方法,利于区分     StartRunnable(String name){         this.name = name;     }     @Override     public void run() {         System.out.println(name+1);         System.out.println(name+2);         System.out.println(name+3);         System.out.println(name+4);         System.out.println(name+5);     } }

3. 实现Callable接口,实现call方法

这个我研究了挺大一会儿。

实现这个接口后,还需要实现call方法

然后通过FutureTask类来对我们实例化对象进行封装

最后还要实例化Thread类进行start操作开启我们的线程

代码演示:

public  class TheadText  {    public static void main(String[] args) {        //先实例化        StartCallable a = new StartCallable();        //然后调用FutureTask类        FutureTask te1 = new FutureTask<>(a);        //设置我们的name属性        a.name = "  一  ";        //开启我们的线程一        new Thread(te1).start();        StartCallable b = new StartCallable();        FutureTask te2 = new FutureTask<>(b);        b.name = "  二  ";        new Thread(te2).start();        StartCallable c = new StartCallable();        FutureTask te3 = new FutureTask<>(c);        c.name = "  三  ";        new Thread(te3).start();        StartCallable d = new StartCallable();        FutureTask te4 = new FutureTask<>(d);        d.name = "  四  ";        new Thread(te4).start();    }}/** * 实现Callable接口,实现call方法 */ class StartCallable implements Callable{     String name ;     public String call() throws Exception{         System.out.println(name+1);         System.out.println(name+2);         System.out.println(name+3);         System.out.println(name+4);         return name;     } }

线程的生命周期

线程在我们创建后(出生)等待CPU的资源分配,然后开始工作,在工作完我们分配的工作后,就会(死亡)消失

感谢你能够认真阅读完这篇文章,希望小编分享的"如何使用Java多线程"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0