`

线程实现方式extends Thread 和 implements Runnable

阅读更多
  • 线程安全:当多个线程访问同一个类时,这个类始终表现出正确的行为
  • synchronized :可在任意方法或对象上加锁

  一.extends Thread

package com.zan;

public class TestThread extends Thread{

    private int count = 5 ;
	
	//synchronized加锁 ,实现线程同步
    //加锁的这段代码称为:互斥区或临界区
	public void run(){  //也可在直接方法上加synchronized 
		synchronized (this) {			
			count--;
			System.out.println("线程"+currentThread().getName() + " count--> "+ count);
		}
	}
	
	public static void main(String[] args) {
		/**
		 *     当多个线程访问TestThread的run方法时,以排队的方式进行处理(这里排对是按照CPU分配的先后顺序而定的),
		 * 		一个线程想要执行synchronized修饰的方法里的代码:
		 * 		1 首先要获得锁
		 * 		2 若是拿到锁,执行synchronized代码体内容;拿不到锁,这个线程就会不断的尝试获得这把锁,直到拿到为止,
		 * 		   而且是多个线程同时去竞争这把锁。(也就是会有锁竞争的问题)
		 */
		TestThread thread = new TestThread();
		Thread t1 = new Thread(thread,"t1");
		Thread t2 = new Thread(thread,"t2");
		Thread t3 = new Thread(thread,"t3");
		Thread t4 = new Thread(thread,"t4");
		Thread t5 = new Thread(thread,"t5");
		t1.start();
		t2.start();
		t3.start();
		t4.start();
		t5.start();
	
	}
}

 

二.implements Runnable

 

package com.zan;

public class TestThread2 implements Runnable{

	private int count = 5 ;
	@Override
	public synchronized void run() {
		count--;
		System.out.println("线程"+Thread.currentThread().getName() + " count--> "+ count);
	}
	
	public static void main(String[] args) {
		
		TestThread2 thread = new TestThread2();
		Thread t1 = new Thread(thread,"t1");
		Thread t2 = new Thread(thread,"t2");
		Thread t3 = new Thread(thread,"t3");
		Thread t4 = new Thread(thread,"t4");
		Thread t5 = new Thread(thread,"t5");
		t1.start();
		t2.start();
		t3.start();
		t4.start();
		t5.start();
	
	}

}

 

Runnable比Thread好:1.适合资源共享  2.java只能单继承,但可以实现多个接口。避免继承的局限

   

 

0
0
分享到:
评论

相关推荐

    Java有两种实现多线程的方式:通过Runnable接口、通过Thread直接实现,请掌握这两种实现方式,并编写示例程序。

    ### Java中的两种多线程实现方式 在Java中,实现多线程的两种主要方式分别是:**通过继承`Thread`类** 和 **实现`Runnable`接口**。下面将详细介绍这两种方式,并提供相应的示例程序。 #### 一、通过继承`Thread`...

    【java学习记录】11.多线程实现阶乘计算(Thread类和Runnable接口)

    在Java编程语言中,多线程是并发执行任务的关键机制,尤其在处理计算密集型或I/O密集型任务时。本篇文章将深入探讨如何利用`Thread`类和`Runnable`...在实际应用中,应根据项目需求和最佳实践来选择适合的实现方式。

    Java多线程-创建多线程的基本方式二:实现Runnable接口

    本文将详细讲解如何通过实现`Runnable`接口创建多线程,以及这种方式相较于继承`Thread`类的优势。 一、实现Runnable接口创建多线程 1. **步骤** 当一个类需要继承其他类而不能直接继承`Thread`类时,可以选择...

    多线程的Runnable_和thread有什么区别

    ### 多线程的Runnable与Thread的区别 在Java中实现多线程有两种主要方式:一种是继承`Thread`类;另一种是实现`Runnable`接口。本文将深入探讨这两种方法的区别,帮助初学者更好地理解并选择适合场景的多线程实现...

    java线程_Thread_Runnable

    Java提供了两种创建线程的方式:继承Thread类和实现Runnable接口。 1. 继承Thread类创建线程: 当你选择继承Thread类时,你需要创建一个新的类,这个类扩展自Thread类。Thread类已经实现了Runnable接口,所以你不...

    java中的多线程内部类实现数据共享和Runnable实现数据共享借鉴.pdf

    本篇将探讨两种在Java中实现多线程数据共享的方式:通过内部类和实现`Runnable`接口。 首先,让我们来看看如何使用`Runnable`接口实现数据共享。`Runnable`接口是Java提供的一种创建线程的方式,它允许我们将线程的...

    实现Runnable接口和继承Thread类两种方式实现在屏幕上随机画正方形线程程序

    本文将深入探讨如何通过实现`Runnable`接口和继承`Thread`类两种方式来创建线程,并实现在屏幕上随机画正方形的程序。 首先,让我们了解线程的概念。线程是程序中的单一顺序控制流,一个进程可以包含多个线程,它们...

    Java多线程技术 线程的死锁,详细阐述了多线程的两种实现方法: 由Thread类派生子类;实现Runnable接口

    通过深入理解线程的基本概念、生命期、状态转换、调度原则以及实现方式,可以有效地利用多线程来优化应用程序。同时,合理地处理线程间的同步和避免死锁也是构建稳定、可靠的多线程应用的关键。

    创建线程的三种方式(Thread、Runnable、Callable).docx

    在Java编程中,创建线程主要有三种方式:继承Thread类、实现Runnable接口以及实现Callable接口。下面我们将逐一探讨这些方式的细节。 **方式一:继承Thread类实现多线程** 这种方式是最直观的创建线程的方法。首先...

    JAVA多线程Thread和Runnable的实现

    有两种主要的方式可以实现多线程:继承`Thread`类和实现`Runnable`接口。这两种方法各有特点,适用于不同的场景。 **继承Thread类** 当一个类直接继承自`Thread`类时,这个类本身就成为一个线程实体。你可以重写`...

    java 多线程Thread与runnable的区别

    在 Java 中,实现多线程有两种方法:继承 Thread 类和实现 Runnable 接口。在本文中,我们将对这两种方法进行详细的介绍和对比。 继承 Thread 类 继承 Thread 类是 Java 中最基本的多线程实现方法。 Thread 类提供...

    Java线程的详细讲解

    本文将详细介绍Java中线程的创建与管理,包括两种主要的实现方式:继承`Thread`类和实现`Runnable`接口,并对线程的基本操作方法以及同步和死锁的概念进行深入探讨。 #### 三、Java多线程实现方式 ##### 1. 继承...

    多线程两种实现方式Java

    本篇将详细讲解Java中实现多线程的两种主要方法:继承Thread类和实现Runnable接口。 ### 继承Thread类 1. **创建子类**:首先,我们需要创建一个新的类,该类继承自Java的`Thread`类。这样,我们的类就拥有了`...

    在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口(csdn)————程.pdf

    在Java编程语言中,创建多线程有两种主要的方法:继承`Thread`类和实现`Runnable`接口。这两种方法都是为了使程序能够同时执行多个任务,从而提高效率和响应性。 **1. 继承Thread类** 当一个类直接继承自`Thread`类...

    java实现多线程的两种方式继承Thread类和实现Runnable接口的方法

    在Java中,创建多线程有两种主要的方式:继承`Thread`类和实现`Runnable`接口。这两种方式都是为了实现程序的并发执行,即允许多个任务在同一时间片内交替执行。下面我们将详细讨论这两种方法及其区别。 ### 继承...

    java线程:两种传统的实现方式.zip

    本文将深入探讨两种传统的Java线程实现方式,并通过一个具体的例子来阐述如何创建和管理这些线程。 首先,我们来看第一种线程实现方式:继承`Thread`类。当你创建一个新的类继承自`java.lang.Thread`,你可以重写它...

    JAVA多线程实现的四种方式 - FelixZh - 博客园1

    在Java中,实现多线程有四种主要方式:继承Thread类、实现Runnable接口、使用ExecutorService和使用Callable与Future。下面将详细阐述这四种方式。 1. 继承Thread类 当你需要创建一个新的线程类时,可以继承Thread...

    用Runnable创建线程比较--java

    在Java中,有两种主要的方法来创建线程:通过继承`Thread`类和实现`Runnable`接口。本篇文章将深入探讨如何使用`Runnable`接口创建线程,并与`Thread`类创建线程的方式进行比较。 首先,我们来看`Runnable`接口。`...

    创建线程类轻松实现线程管理

    Java提供两种主要方式来创建线程:继承`Thread`类或实现`Runnable`接口。这两种方法都可以让类成为可执行的线程,但它们之间存在一些差异。 1. 继承`Thread`类: 当你创建一个新的类并直接继承`Thread`类时,你可以...

    用Java多线程实现数据结构算法动态演示.pdf

    通过上述的介绍和示例代码,可以看出Java多线程编程的方法有继承Thread类和实现Runnable接口两种,各有其适用场景和优势。在实际应用中,可以根据具体需求选择合适的方法来设计和实现多线程程序。

Global site tag (gtag.js) - Google Analytics