【Java多线程练习】创建两个线程,其中一个线程遍历100以内的偶数,另一个线程遍历100以内的奇数

       本文主要通过使用java多线程的方式,实现一个线程遍历100以内的偶数,另一个遍历100以内的基数,相关内容为本人课堂中所学知识,希望能够为你带来一些启发和建议。

public class exer {
    public static void main(String[] args) {
        MyThread1 myThread1 = new MyThread1();
        MyThread2 myThread2 = new MyThread2();
        myThread1.start();
        myThread2.start();
    }

}
class MyThread1 extends Thread{      //用来遍历偶数
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
          if (i%2==0)
            System.out.println(Thread.currentThread().getName() + ":" +i);//获取线程名
        }
    }
}

class MyThread2 extends Thread{    //用来遍历奇数
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
          if (i%2!=0)
            System.out.println(Thread.currentThread().getName() + ":" +i);
        }
    }

 第二种实现方式:通过创建匿名子类的方式进行操作

public class ThreadDemo {
    public static void main(String[] args) {
        //方法2:创建Thread类的匿名子类的方式
        new Thread(){
            public void run() {
                for (int i = 0; i < 100; i++) {
                    if (i%2==0)
                        System.out.println(Thread.currentThread().getName() + ":" +i);
                }
            }
        }.start();

        new Thread(){
            public void run() {
                for (int i = 0; i < 100; i++) {
                    if (i%2!=0)
                        System.out.println(Thread.currentThread().getName() + ":" +i);
                }
            }
        }.start();
    }
}

多线程的一些阐述:

为什么要是用多线程?

  1.在一个程序中,有很多的操作是非常耗时的,如数据库读写操作,IO操作等,如果使用单线程,那么程序就必须等待这些操作执行完成之后才能执行其他操作。使用多线程,可以在将耗时任务放在后台继续执行的同时,同时执行其他操作。

  2.可以提高程序的效率。

  3.在一些等待的任务上,如用户输入,文件读取等,多线程就非常有用了。

  缺点:

  1.使用太多线程,是很耗系统资源,因为线程需要开辟内存。更多线程需要更多内存。

  2.影响系统性能,因为操作系统需要在线程之间来回切换。

  3.需要考虑线程操作对程序的影响,如线程挂起,中止等操作对程序的影响。

  4.线程使用不当会发生很多问题。

总结:多线程是异步的,但这不代表多线程真的是几个线程是在同时进行,实际上是系统不断地在各个线程之间来回的切换(因为系统切换的速度非常的快,所以给我们在同时运行的错觉)。

线程的创建基础知识:

🔶Thread类的介绍

  • Java语言的JVM允许程序运行多个线程,它通过Java.lang.Thread类来体现。

  • Thread类的特性

    • 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常把run()方法的主体称为线程体。

    • 通过该Thread对象的start()方法来启动这个线程,而非直接调用run()

      • 创建方法介绍

        • Thread():创建新的Thread对象

        • Thread(String threadname):创建线程并指定线程实例名

        • Thread(Runnable target):指定创建线程的目标对象,它实现了Runnable接口中的run方法

        • Thread(Runnable target,String name):创建新的Thread对象。

      • 使用方法介绍

        • void start(): 启动线程,并执行对象的run()方法

        • run(): 线程在被调度时执行的操作

        • String getName(): 返回线程的名称

        • void setName(String name):设置该线程名称

        • static Thread currentThread(): 返回当前线程。

          在Thread子类中就 是this,通常用于主线程和Runnable实现类

        • static void yield():线程让步

          暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程

          若队列中没有同优先级的线程,忽略此方法

        • join() 当某个程序执行流中调用其他线程的 join() 方法时,调用线程将 被阻塞,直到 join() 方法加入的 join 线程执行完为止 。低优先级的线程也可以获得执行

        • static void sleep(long millis):(指定时间:毫秒)

          令当前线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队.

          抛出InterruptedException异常

        • stop(): 强制线程生命期结束,不推荐使用

        • boolean isAlive():返回boolean,判断线程是否还活着

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fang GL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值