`
dou_shini8820
  • 浏览: 80736 次
社区版块
存档分类
最新评论

java多线程详细讲解

 
阅读更多

首先要知道实现java多线程有2种方法,一个是继承Thread类重写run()方法,一个是 实现Runnable接口重写run()方法,执行这个多线程类的方法都是调用start()方法,并且第二种方法才是推荐的

 

方法一:继承Thread类,为了标识正在运行的是哪个线程,我给这个类起个名字name

 

public class Mythread extends Thread{

	private String name = null;
	
	public Mythread(String name) {
		this.name = name;
	}
	
	@Override
	public void run() {
		for (int i = 0; i < 50; i++) {
			System.out.println("正在执行"+name+"的第"+i+"个数字");
		}
	}
}

 在main中调用这个多线程类,我们多调用几次才叫多线程调用呀(模仿实际项目中多个人访问这个方法)

 

 

 

	public static void main(String[] args) {
		Mythread t1 = new Mythread("A");
		Mythread t2 = new Mythread("B");
		t1.start();
		t2.start();
	}
 

 

 

可以发现线程交替执行

 

 

方法二:实现Runnable接口

 

 

public class Mythread implements Runnable{
	private String name=null;
	public Mythread(String name){
		this.name = name;
	}
	@Override
	public void run() {
		for (int i = 0; i < 500; i++) {
			System.out.println("正在执行"+name+"的第"+i+"个方法");
		}
	}

}

 

 调用时发现这个接口并没有start()方法,但是我们查看Thread这个类发现他有个构造方法里可以传一个Runnable接口

 

public Thread(Runnable r){}

 也就是说Thread类是Runnable接口的实现类。因此调用代码通过Thread类来调用start()方法:

 

 

 

public static void main(String[] args) {
		Mythread m1 = new Mythread("A");
		Mythread m2 = new Mythread("B");
		new Thread(m1).start();
		new Thread(m2).start();
}
 

 

 

 

2种方法的区别和联系:

在实际中我们推荐用方法二,这因为:

1、方法一不能实现多继承(java没有多继承)

2、不能共享资源

例子:实现多个线程卖总共的5张票

用方法一 的代码如下:

 

 

public class Mythread extends Thread{
	private int ticket =  5;
	@Override
	public void run() {
		for (int i = 0; i < 50; i++) {// 50次循环,5张票肯定是该卖完了
			if(ticket > 0 ){
				System.out.println("我卖了 票"+ticket--);
			}
		}
	}
}

 调用:

 

public static void main(String[] args) {
		Mythread t1 = new Mythread();
		Mythread t2 = new Mythread();
		t1.start();
		t2.start();
	}

 

 结果在控制台上打印了2*5=10次,也就是每张票卖了2次,这时不行的,下面我们用Runnable接口方式实现卖票:

 

public class Mythread implements Runnable{
	private int ticket =  5;
	@Override
	public void run() {
		for (int i = 0; i < 50; i++) {
			if(ticket > 0 ){
				System.out.println("我卖了 票"+ticket--);
			}
		}
	}
}

 

调用的时候,我们不是多次创建Mythread m = new Mythread(),然后每个执行new Thread(m).start()方法,而是只创建一次,然后多次start这同一个m

 

 

public static void main(String[] args) {
		Mythread m = new Mythread();
		new Thread(m).start();
		new Thread(m).start();
}

 这样就实现了资源共享了

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    java多线程的讲解和实战

    本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者以及希望深入理解多线程的开发者。 1. **线程的基本概念**:线程是程序执行的最小单位,一个进程中可以有多个线程同时运行。Java...

    JAVA的多线程使用讲解

    JAVA多线程使用讲解,如何创建线程,讲解如何使用多线程,以及线程的等待与唤醒。 JAVA多线程使用讲解,如何创建线程,讲解如何使用多线程,以及线程的等待与唤醒。 JAVA多线程使用讲解,如何创建线程,讲解如何使用...

    java多线程知识讲解及练习题

    Java 多线程基础知识的了解是 Java 程序设计的重要组成部分,本资源摘要信息对 Java 多线程基础知识进行了详细的讲解和练习题。 1. sleep() 和 wait() 的区别 sleep() 是 Thread 类的方法,导致线程暂停执行指定...

    汪文君JAVA多线程编程实战(完整不加密)

    书中详细介绍了Java多线程的核心概念,如线程的创建、启动、同步、协作以及生命周期管理。读者将学习如何通过实现Runnable接口或继承Thread类来创建线程,以及如何使用Executor框架来管理线程池。 此外,书中还深入...

    JAVAJAVA多线程教学演示系统论文

    2. **JAVA多线程API**:论文会详细阐述JAVA提供的多线程API,如Thread类、Runnable接口、ExecutorService和Future接口等。通过实例解析这些类和接口的使用方法,帮助读者理解如何在实际编程中创建和管理线程。 3. *...

    Java多线程核心技术讲解

    Java多线程核心技术:理解多线程、在Java中实现多线程、线程的生命周期、线程的优先级、线程的同步、线程的阻塞、守护线程、线程组、线程池、总结。

    thinkin java里面对多线程详细讲解

    根据提供的信息,我们可以深入探讨《Think in Java》一书中关于多线程的详细讲解。《Think in Java》是一本经典的编程书籍,它不仅全面介绍了Java语言的基础知识,还深入探讨了高级主题,如多线程。 ### 多线程概念...

    java 多线程编程实战指南(核心 + 设计模式 完整版)

    《Java多线程编程实战指南》这本书深入浅出地讲解了Java多线程的核心概念和实战技巧,分为核心篇和设计模式篇,旨在帮助开发者掌握并应用多线程技术。 1. **线程基础** - **线程的创建**:Java提供了两种创建线程...

    张孝祥老师讲解java的多线程的配套ppt

    张孝祥老师讲解java的多线程的配套ppt,很实用的

    JAVA多线程编程详解-详细操作例子

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,实现多线程有两种主要方式:通过继承`Thread`类或者实现`Runnable`接口。 1. **继承Thread类*...

    java多线程 清华大学独特详细讲解源代码

    本资源"java多线程 清华大学独特详细讲解源代码"正是针对这一主题,通过独特的教学方法,帮助学习者深入理解并掌握Java多线程的精髓。 首先,我们要理解什么是多线程。在单线程环境中,程序的执行是顺序的,而在多...

    java多线程进阶

    Java多线程是Java编程中的核心概念,尤其对于高级开发者来说,掌握多线程的深入理解和应用至关重要。这本书“java多线程进阶”显然旨在帮助读者深化这方面的理解,打通编程中的“任督二脉”,使开发者能够更加熟练地...

    java多线程编程讲解

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,实现多线程有两种主要方式:通过继承`Thread`类或者实现`Runnable`接口。 一、创建线程 1. ...

    Java多线程同步具体实例讲解 .doc

    Java多线程同步是编程中一个非常重要的概念,特别是在并发编程和高并发系统设计中起到关键作用。在Java中,为了保证线程安全,避免数据竞争和不一致的状态,我们通常会使用同步机制来控制对共享资源的访问。本文将...

    JAVA 多线程的PPT和示例

    Java多线程的PPT和示例会详细讲解以上这些概念,并通过实例代码展示如何在实际项目中应用。理解并熟练运用这些知识,能让你在编写高并发、高性能的Java应用时游刃有余。通过学习和实践,你可以更好地掌握Java多线程...

    java线程生命周期详细讲解

    Java多线程生命周期的讲解,很详细,希望能帮到大家

    深入学习:Java多线程编程

    《深入学习:Java多线程编程》是一本专注于Java并发技术的专业书籍,旨在帮助开发者深入理解和熟练运用Java中的多线程编程。Java多线程是Java编程中的核心部分,尤其在现代高性能应用和分布式系统中不可或缺。理解并...

    JAVA多线程模式高清版+DEMO

    这个压缩包文件"JAVA多线程模式高清版+DEMO"显然是关于Java多线程设计模式的详细教程,很可能包含了理论讲解、代码示例以及实战DEMO。 在Java多线程编程中,了解和掌握以下知识点至关重要: 1. **线程的创建与启动...

Global site tag (gtag.js) - Google Analytics