Java中Runnable和Thread

java中有两种实现多线程的方式:一种是继承Thread类,一种是实现Runnable接口。

1.java启动线程为什么使用start函数呢?

在JDK的安装路径下,src.zip是全部的java源程序,通过此代码找到Thread中的start()方法的定义,可以发现此方法中使用了private native void start0();

其中native关键字表示可以调用操作系统的底层函数,那么这样的技术成为JNI技术(java Native Interface)。

2.联系和区别:

Thread类,有一个构造方法:public Thread(Runnable targer)此构造方法接受Runnable的子类实例,也就是说通过Thread类来启动Runnable实现的多线程。(start()可以协调系统的资源)。

在程序开发中多线程以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类,避免继承的局限,一个类可以实现多个接口。

时间: 2024-12-12 02:16:34

Java中Runnable和Thread的相关文章

Java中Runnable和Thread的区别

在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限. 下面看例子: 代码如下: package org.thread.demo; class MyThread extends Thread{ private String name; public MyThread(String

Java中Runnable和Thread的区别的疑问

在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的run() 方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限. 在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处: 1.避免点继承的局限,一个类可以继承多个接口. 2.适合于资源的共享 以上为在其他博客上看到的

Java中线程(Thread)知识概括

Java中线程(Thread)知识概括 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行. 一个进程中至少有一个线程. 例如:Java VM 启动的时候会有一个进程java.exe.该进程中至少一个线程负责java程序的执行,而且这个线程运行的代码存在于main方法中.该线程称之为主线程.jvm启动不止一个线程,还有负责垃圾回收机制等线程. 如何在自定义的代码中,自定义一个线程呢

Java中的线程Thread解析及用途

Java中的线程 进程和线程 在并发性程序中,有两个基本的执行单元:进程和线程.在Java编程语言中,并发编程大多数情况下都是和线程相关.然而,进程也是很重要的. 一个计算机系统中通常都有很多活动的进程和线程.这一点即使是在只有一个执行核心,并且在给定时刻只能执行一个线程的系统中都是存在的.单一核心的处理时间是由整个操作系统的"时间片"特性来在众多的进程和线程中共享的. 现在,计算机系统中有多个处理器或者是有多核处理器的情况越来越普遍.这就大大增强了系统执行多个进程和线程的并发性. 进

java中runnable的用法解析

1.类结构,首先有两个类,一个是测试类Main,一个是线程类MyThread. 2.MyThread package com.test.thread; import java.lang.management.ThreadInfo; public class MyThread implements Runnable { String name=null; MyThread(String name) { this.name=name; } @Override public void run() {

Java 多线程之 Runnable VS Thread 以及资源共享问题

对于 Java 多线程编程中的 implements Runnable 与 extends Thread,部分同学可能会比较疑惑,它们之间究竟有啥区别和联系呢?他们是不是没啥区别随便选呢?实际中究竟该选择哪一个呢? 甚至网上不少博客文章以讹传讹得出不少谬论,那今天的走进科学栏目将带您一一揭开谜底. 1.区别: 其实这块主要是围绕着接口和抽象类的区别以及一些设计原则而言的. 1.1 Inheritance Option: The limitation with "extends Thread&qu

Java中ThreadPool的原理与实现

(1)为什么需要ThreadPool? 当我们在使用ThreadPool的时候,首先要明白为什么需要ThreadPool?ThreadPool中到底有些什么? 我们知道进程代表程序的一次执行.进程在创建过程中会加载可执行文件到内存(为了提高执行效率,一般是将可执行文件映射到进程的地址空间,进行lazy load),然后由线程执行可执行文件中的指令.多个进程可以执行同一个可执行文件.所以一个进程至少要有一个线程,一般称之为主线程.进程拥有自己的地址空间,进程中的线程则共享进程的地址空间,所以多个线

JAVA中创建线程的方法及比较

JAVA中提供了Thread类来创建多线程的应用,常用的方式有以下2种. 一.实现Runnable接口来创建线程 1.创建一个任务类,实现Runnable接口,并重写run()方法,run()方法中的内容就是需要线程完成的任务. 2.创建一个任务类的对象. 3.任务类必须在线程中执行,因此将任务类的对象作为参数,创建一个Thread类对象,该Thread类对象才是真正的线程对象. 4.调用Thread线程类对象的start()方法,来启动一个线程. 代码实例: 1 public class Te

Java中继承thread类与实现Runnable接口的区别

Java中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类 在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程.当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果. Java代码   package com.threadtest; class MyThread e