Java开启新线程并传参方法代码实现

一、继承Thread类

步骤:

1):定义一个类A继承于Java.lang.Thread类.

2):在A类中覆盖Thread类中的run方法.

3):我们在run方法中编写需要执行的操作:run方法里的代码,线程执行体.

4):在main方法(线程)中,创建线程对象,并启动线程:

(1)创建线程类对象: A类 a = new A类();

(2)调用线程对象的start方法: a.start();//启动一个线程

注意:千万不要调用run方法,如果调用run方法好比是对象调用方法,依然还是只有一个线程,并没有开启新的线程.

线程只能启动一次!

创建启动线程实例:

//1):定义一个类A继承于java.lang.Thread类.
class MusicThread extends Thread{
  private String idNum;
  public MusicThread(String idNum) {
    this.idNum= idNum;
  }
  //2):在A类中覆盖Thread类中的run方法.
  public void run() {
    //3):在run方法中编写需要执行的操作
    System.out.println(idNum);
  }
} 

public class ExtendsThreadDemo {
  public static void main(String[] args) {
     //4):在main方法(线程)中,创建线程对象,并启动线程.
     MusicThread music = new MusicThread("123456");
     music.start();
  }
}

二、实现Runnable接口

步骤:

1):定义一个类A实现于java.lang.Runnable接口,注意A类不是线程类.

2):在A类中覆盖Runnable接口中的run方法.

3):我们在run方法中编写需要执行的操作:run方法里的,线程执行体.

4):在main方法(线程)中,创建线程对象,并启动线程:

(1)创建线程类对象: Thread t = new Thread(new A());

(2)调用线程对象的start方法: t.start();

创建启动线程实例:

//1):定义一个类A实现于java.lang.Runnable接口,注意A类不是线程类.
class MusicImplements implements Runnable{
  private String idNum;
  public void setId(String idNum){
    this.idNum = idNum;
  }
  //2):在A类中覆盖Runnable接口中的run方法.
  public void run() {
    //3):在run方法中编写需要执行的操作
    System.out.println(idNum);
  }
} 

public class ImplementsRunnableDemo {
  public static void main(String[] args) {
    //4):在main方法(线程)中,创建线程对象,并启动线程
    MusicImplements mi = new MusicImplements();
    mi.setId("123456");
    Thread t = new Thread(mi);
    t.start();
  }
}

继承方式和实现方式的区别:

继承方式:

1):从设计上分析,Java中类是单继承的,如果继承了Thread了,该类就不能再有其他的直接父类了.
2):从操作上分析,继承方式更简单,获取线程名字也简单.(操作上,更简单)

String name = Thread.currentThread().getName();
3):从多线程共享同一个资源上分析,继承方式不能做到.
实现方式:
1):从设计上分析,Java中类可以多实现接口,此时该类还可以继承其他类,并且还可以实现其他接口,设计更为合理.
2):从操作上分析,实现方式稍微复杂点,获取线程名字也比较复杂,得使用Thread.currentThread()来获取当前线程的引用.

3):从多线程共享同一个资源上分析,实现方式可以做到(是否共享同一个资源).

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 通过字节码看java中this的隐式传参详解

    前言 从字节码看java中 this 隐式传参具体体现(和python中的self如出一辙,但是比python中藏得更深),也发现了 static 与 非 static 方法的区别所在! static与非static方法都是存储java的方法区.在static 方法中,没有this引用,因此无法使用当前类中所定义的变量,而非static方法则会默认传入this. 概述 this关键字,是一个隐式参数,另外一个隐式参数是super. this用于方法里面,用于方法外面无意义. this关键字一般用

  • Js调用Java方法并互相传参的简单实例

    Js通过PhoneGap调用Java方法并互相传参的. 一.JAVA代码 写一个类,该类继承自Plugin并重写execute方法. import org.json.JSONArray; import android.app.Activity; import android.app.AlertDialog; import android.content.ActivityNotFoundException; import android.content.DialogInterface; impor

  • java 将方法作为传参--多态的实例

    在前段时研究智能算法时,发现如果使用java进行实现的话,往往具体实现过程差不多,但是适应值函数却根据 研究对象的不同发生很大的改变,这样对代码的维护产生很大的阻碍,于是产生的一个疑问:可不可以将适应值函数 作为参数传入到方法中,根据C/C++的习惯的话,由于指针的存在,可以将函数作为指针传入,由于指针使用的复杂 性以及难维护性,效果一般.如果换一种面向对象的思想,可以想设计一个接口I,这个接口只提供一个方法,那么相 当于可以将接口作为参数传入到方法中,调用时只需要将设计一个类,实现接口I,那么

  • Java中数组的创建与传参方法(学习小结)

    (一)数组的创建 数组的创建包括两部分:数组的申明与分配内存空间. int score[]=null; //申明一维数组 score=new int[3]; //分配长度为3的空间 数组的申明还有另外一种方式: int[] score=null; //把中括号写在数组名前面 通常,在写代码时,为了方便,我们将两行合并为一行: int score[]=new int score[3]; //将数组申明与分配内存写在一行 (二)传递参数 由于初学java,这里只讨论值传递,不考虑地址传递.主要有3点

  • 浅析java中Integer传参方式的问题

    Java本身都是值传递式的调用,对于对象传递的是地址值.给地址值重新赋值等于重新指向,不会影响外层.而且这里Integer对象也有特殊性.其实现上可能类似 复制代码 代码如下: class Integer{final int value; //一旦赋值,就不能改变.} 这就出现:调用时传的地址值不能改变外层+对象本身又不能改变.导致这个值没法改变 解决方案很多1.java风格就是,单个值用返回值.return i; 外面再i=foo();赋值:多个值用数组或对象.2.传递自己的封装类.class

  • Java调用shell脚本解决传参和权限问题的方法

    1. java 执行shell java 通过 Runtime.getRuntime().exec() 方法执行 shell 的命令或 脚本,exec()方法的参数可以是脚本的路径也可以是直接的 shell命令 代码如下(此代码是存在问题的.完整代码请看2): /** * 执行shell * @param execCmd 使用命令 或 脚本标志位 * @param para 传入参数 */ private static void execShell(boolean execCmd, String

  • Java开启新线程并传参方法代码实现

    一.继承Thread类 步骤: 1):定义一个类A继承于Java.lang.Thread类. 2):在A类中覆盖Thread类中的run方法. 3):我们在run方法中编写需要执行的操作:run方法里的代码,线程执行体. 4):在main方法(线程)中,创建线程对象,并启动线程: (1)创建线程类对象: A类 a = new A类(); (2)调用线程对象的start方法: a.start();//启动一个线程 注意:千万不要调用run方法,如果调用run方法好比是对象调用方法,依然还是只有一个

  • Java创建子线程的两种方法

    摘要: 其实两种方法归结起来看还是一种,都是利用Thread的构造器进行创建,区别就是一种是无参的,一种是有参的. 一.继承Thread线程类: 通过继承Thread类,重写run方法,子类对象就可以调用start方法启动线程,JVM就会调用此线程的run方法. 代码如下: public class MyThread extends Thread { public MyThread() { super(); } @Override public void run() { } // 线程执行结束

  • Android开启新线程实现电子广告牌项目

    利用之前学过的多线程处理技术,我们做一个开启新线程实现电子广告牌的项目 界面布局文件,加入ImageView图片控件,用于显示一个图片,一个TextView控件,用于显示广告说明语. res/layout/main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro

  • Jmeter线程组传参原理解析

    这篇文章主要介绍了jmeter线程组传参原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 背景介绍: 使用jmeter做登录和搜索接口的测试: 登录接口请求头为:Content-Type: application/x-www-form-urlencoded; charset=UTF-8 搜索接口请求头为:Content-Type: application/json; charset=UTF-8 同时,搜索的请求头中需要用到登录接口返回值中

  • Java 开启多线程常见的4种方法

    目录 简介 1. 实现 Runnable 接口 2. 实现 Callable 接口 3. 继承 Thread 类 4. 匿名内部类的写法 简介 常见的4种使用线程的方法: 1实现 Runnable 接口: 2实现 Callable 接口: 3继承 Thread 类. 4匿名内部类的写法. 1. 实现 Runnable 接口 编写测试类RunnableDemo 实现 Runnable 接口,实现接口中的 run() 方法. public class RunnableDemo implements

  • JAVA实现FTP断点上传的方法

    本文实例讲述了JAVA实现FTP断点上传的方法.分享给大家供大家参考.具体分析如下: 这里主要使用apache中的net包来实现.网址http://commons.apache.org/net/.具体包的下载和API文档请看官网. 断点上传就是在上传的过程中设置传输的起始位置.并设置二进制传输. import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.

  • 详解React路由传参方法汇总记录

    React中传参方式有很多,通过路由传参的方式也是必不可少的一种. 本文记录项目中会用到的路由传参方式: 路由跳转传参API + 目标路由获取参数的方式. 一.动态路由 跳转方法 Link <Link to={{ pathname: "/user/add/1" }}>跳转新增页面</Link> history.push this.props.history.push("/user/add/1"); 获参方法 this.props.match.

  • java多线程之线程同步七种方式代码示例

    为何要使用同步?  java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),     将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,     从而保证了该变量的唯一性和准确性. 1.同步方法  即有synchronized关键字修饰的方法.     由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,     内置锁会保护整个方法.在调用该方法前,需要获得内置锁,否则就处于阻塞状态.     代码

  • java检查服务器的连通两种方法代码分享

    首先要了解一下ping的内容. 概述 PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序.Ping发送一个ICMP(Internet Control Messages Protocol)即因特网信报控制协议:回声请求消息给目的地并报告是否收到所希望的ICMPecho (ICMP回声应答).它是用来检查网络是否通畅或者网络连接速度的命令.作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:利用

随机推荐