当前位置: 首页 > 编程笔记 >

Java创建多线程的两种方式对比

伍溪叠
2023-03-14
本文向大家介绍Java创建多线程的两种方式对比,包括了Java创建多线程的两种方式对比的使用技巧和注意事项,需要的朋友参考一下

采用继承Thead类实现多线程:

优势:编写简单,如果需要访问当前线程,只需使用this即可,无需使用Thead.currentThread()方法。

劣势:因为这种线程类已经继承了Thead类,所以不能再继承其它类。

示例代码:


 package org.frzh.thread;

  

 public class FirstThread extends Thread{

     private int i;

     

     //重写run方法,run方法的方法体就是线程执行体

     public void run() {

         for (; i < 100; i++) {

             //当线程类继承Thread类时,可以直接调用getName方法获得当前线程名

             //如果想获得当前线程,直接使用this

             //Thread对象的getName方法返回当前线程的名字

             System.out.println(getName() + " " + i);

         }

     }

     

     public static void main(String[] args) {

         for (int i = 0; i < 100; i++) {

             //调用Thead的currentThread方法获取当前线程

             System.out.println(Thread.currentThread().getName() + " " +i);

             if (i == 20) {

                 new FirstThread().start();

                 new FirstThread().start();

             }

         }

     }

 }

运行结果片段:

我们发现,在两个子线程中i的值并不连续,似乎与我们说的子线程直接共享数据不符。其实,在这里我们实例化了两个子线程,每个拥有自己的实例变量i。

采用实现Runable接口的多线程:

优势:线程类只是实现了Runable接口,因此还可以继承其他类;

         在这种情况下,可以使多个线程共享一个target对象,所以非常适合多个线程用来处理同一份资源的情况,从而可以将cpu、代码和数据分开,形成清晰的模型,较好的体现面向对象思想。

劣势:编程略有些复杂,如果要访问当前线程必须使用Thread.currentThread方法。

示例代码:


 package org.frzh.thread;

  

 public class SecondThread implements Runnable{

     private int i;

     

     @Override

     public void run() {

         // TODO Auto-generated method stub

         for (; i < 100; i++) {

             System.out.println(Thread.currentThread().getName() + " " + i);

         }

     }

     

     public static void main(String[] args) {

         for (int i = 0; i < 100; i++) {

             System.out.println(Thread.currentThread().getName() + " " + i);

             if (i == 20) {

                 SecondThread st = new SecondThread();

                 new Thread(st, "子线程1").start();

                 new Thread(st, "子线程2").start();

             }

         }

     }

  

 }


运行结果片段:

可以看到,此时的i值是连续变化的,因为线程1和2共享同一个target。

 类似资料:
  • 本文向大家介绍Java创建线程的两种方式,包括了Java创建线程的两种方式的使用技巧和注意事项,需要的朋友参考一下 前言 多线程是我们开发过程中经常遇到的,也是必不可少需要掌握的。当我们知道需要进行多线程开发时首先需要知道的自然是如何实现多线程,也就是我们应该如何创建线程。 在Java中创建线程和创建普通的类的对象操作是一样的,我们可以通过两种方式来创建线程: 1、继承Thread类,并重写run

  • 本文向大家介绍java 创建线程的几种方式,包括了java 创建线程的几种方式的使用技巧和注意事项,需要的朋友参考一下 说道线程,肯定会想到使用 java.lang.Thread.java这个类 那么创建线程也主要有2种方式 第一种方式: 然后在调用处,执行start方法即可: 第二种方式实现Runnable接口: 同样在执行的地方直接生命这个MyRunnable,再直接丢进线程start即可:

  • 一、继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。 (2)创建Thread子类的实例,即创建了线程对象。 (3)调用线程对象的start()方法来启动该线程。 public class FirstThreadTest extends Thread { int i = 0;

  • 本文向大家介绍Java多线程——之一创建线程的四种方法,包括了Java多线程——之一创建线程的四种方法的使用技巧和注意事项,需要的朋友参考一下 1.实现Runnable接口,重载run(),无返回值 2.继承Thread类,复写run() 使用时通过调用Thread的start()(该方法是native),再调用创建线程的run(),不同线程的run方法里面的代码交替执行。 不足:由于java为单

  • 本文向大家介绍浅谈Java的两种多线程实现方式,包括了浅谈Java的两种多线程实现方式的使用技巧和注意事项,需要的朋友参考一下 本文介绍了浅谈Java的两种多线程实现方式,分享给大家。具有如下: 一、创建多线程的两种方式 Java中,有两种方式可以创建多线程: 1 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2 通过实现Runnable接口,实例化Threa

  • 主要内容:1 创建线程的两种方式,2 Thread类,3 Runnable接口,4 如何启动线程,5 创建线程的例子1 创建线程的两种方式 有两种创建线程的方法: 通过继承Thread类 通过实现Runnable接口。 2 Thread类 Thread类提供了构造方法和方法来创建和执行线程。Thread类继承Object类并实现了Runnable接口。 Thread类的构造方法有: Thread() Thread(String name) Thread(Runnable r) Thread(Ru

  • 本文向大家介绍EasyUI创建对话框的两种方式,包括了EasyUI创建对话框的两种方式的使用技巧和注意事项,需要的朋友参考一下 对话框(Dialog)是一个特殊的窗口(window),可以包含在顶部的工具栏和在底部的按钮。默认情况下,对话框(Dialog)不能改变大小,但是用户可以设置 resizable 属性为 true,使其可以改变大小。 这种就是对话框了。 EasyUI有两种创建方式: 第一

  • 本文向大家介绍Java多线程中的单例模式两种实现方式,包括了Java多线程中的单例模式两种实现方式的使用技巧和注意事项,需要的朋友参考一下 Java多线程中的单例模式 一、在多线程环境下创建单例 方式一: 方式二: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!