`
DanielHan
  • 浏览: 57161 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
074641d7-eb86-343f-a745-65a0f693edb5
设计模式
浏览量:7364
社区版块
存档分类
最新评论

java多线程细节

阅读更多
1.线程名的占用问题
public class Demo1 extends Thread{
	 private String who;  
	 
	    public void run()  
	    {  
	        System.out.println(who + ":" + this.getName());  
	    }  
	    public Demo1(String who)  
	    {  
	        super();  
	        this.who = who;  
	    }  
	    public Demo1(String who, String name)  
	    {  
	        super(name);  
	        this.who = who;  
	    }  
	    public static void main(String[] args)  
	    {  
	    	Demo1 thread1 = new Demo1 ("thread1", "MyThread1");  
	    	Demo1 thread2 = new Demo1 ("thread2","MyThread2");  
	    	Demo1 thread3 = new Demo1 ("thread3");  
	        thread1.start();  
	        thread2.start();  
	        thread3.start();  
	    }
}

结果:
thread1:MyThread1
thread3:Thread-0
thread2:MyThread2

注:输出结果顺序不固定

public class Demo1 extends Thread{
	 private String who;  
	 
	    public void run()  
	    {  
	        System.out.println(who + ":" + this.getName());  
	    }  
	    public Demo1(String who)  
	    {  
	        super();  
	        this.who = who;  
	    }  
	    public Demo1(String who, String name)  
	    {  
	        super(name);  
	        this.who = who;  
	    }  
	    public static void main(String[] args)  
	    {  
	    	Demo1 thread1 = new Demo1 ("thread1", "MyThread1");  
	    	Demo1 thread2 = new Demo1 ("thread2");  
	    	Demo1 thread3 = new Demo1 ("thread3");  
	        thread2.setName("MyThread2");  
	        thread1.start();  
	        thread2.start();  
	        thread3.start();  
	    }
}

thread2:MyThread2
thread3:Thread-1
thread1:MyThread1


通过比较:创建线程时,如果不设置线程名,系统会自动分配线程名,并占位,通过thread3:Thread-1就可断定thread2占据着Thread-0的位置

2.Thread类的start方法不能多次调用,如不能调用两次thread1.start()方法。否则会抛出一个IllegalThreadStateException异常

3.如果通过继承Runnable的方式创建线程,很多方法都不能用(如isAlive等)
Runnable接口源码如下:
/**
 * The <code>Runnable</code> interface should be implemented by any
 * class whose instances are intended to be executed by a thread. The
 * class must define a method of no arguments called <code>run</code>.
 * <p>
 * This interface is designed to provide a common protocol for objects that
 * wish to execute code while they are active. For example,
 * <code>Runnable</code> is implemented by class <code>Thread</code>.
 * Being active simply means that a thread has been started and has not
 * yet been stopped.
 * <p>
 * In addition, <code>Runnable</code> provides the means for a class to be
 * active while not subclassing <code>Thread</code>. A class that implements
 * <code>Runnable</code> can run without subclassing <code>Thread</code>
 * by instantiating a <code>Thread</code> instance and passing itself in
 * as the target.  In most cases, the <code>Runnable</code> interface should
 * be used if you are only planning to override the <code>run()</code>
 * method and no other <code>Thread</code> methods.
 * This is important because classes should not be subclassed
 * unless the programmer intends on modifying or enhancing the fundamental
 * behavior of the class.
 *
 * @author  Arthur van Hoff
 * @see     java.lang.Thread
 * @see     java.util.concurrent.Callable
 * @since   JDK1.0
 */
public
interface Runnable {
    /**
     * When an object implementing interface <code>Runnable</code> is used
     * to create a thread, starting the thread causes the object's
     * <code>run</code> method to be called in that separately executing
     * thread.
     * <p>
     * The general contract of the method <code>run</code> is that it may
     * take any action whatsoever.
     *
     * @see     java.lang.Thread#run()
     */
    public abstract void run();
}

问题:如果我需要extends其他类,又要用到isAlive方法怎么办?
分享到:
评论

相关推荐

    java 多线程操作数据库

    本文将基于一个具体的Java多线程操作数据库的应用程序,深入探讨其背后的原理、实现细节以及潜在的挑战。 #### 核心知识点: 1. **多线程基础**:多线程是Java编程中的一个重要概念,允许程序同时执行多个任务。在...

    JAVA多线程练习题答案。

    JAVA多线程练习题答案详解 在本文中,我们将对 JAVA 多线程练习题的答案进行详细的解释和分析。这些题目涵盖了 JAVA 多线程编程的基本概念和技术,包括线程的生命周期、线程同步、线程状态、线程优先级、线程安全等...

    java多线程.pdf

    本文将根据提供的文件信息,深入探讨Java多线程的相关概念和技术细节。 #### 二、Java线程基础 ##### 1. 什么是线程? 线程是进程中的最小执行单元,是进程内部的一次独立的控制流程。在Java中,每个进程至少有一...

    Java多线程设计模式_清晰完整PDF版 Java多线程设计模式源代码

    Java多线程设计模式是Java开发中的重要领域,它涉及到如何在并发环境下高效、安全地管理资源和控制程序执行流程。本资料集包含了清晰完整的PDF版书籍和源代码,为学习和理解Java多线程设计模式提供了丰富的素材。 ...

    JAVA编写的多线程小弹球测试

    总的来说,"JAVA编写的多线程小弹球测试"项目涵盖了Java多线程、GUI编程、随机数生成和颜色处理等多个重要知识点,是学习和实践Java并发编程的好案例。通过这个项目,开发者不仅可以锻炼到编程技巧,还能深入理解...

    java多线程下载文件

    本文将深入解析Java多线程下载文件的关键技术和实现细节。 #### 一、Java多线程下载原理 多线程下载的核心思想是将一个大文件分割成多个小的部分,每个部分由一个独立的线程进行下载,最后将这些部分合并成完整的...

    java多线程

    但考虑到描述中提到了电子书的标题以及它涉及的主题,我们可以从标题“Java多线程”出发,详细阐述Java多线程编程的核心概念、技术细节、应用场景和常见问题处理。 Java多线程是一种允许多个线程在单个Java程序中...

    java多线程作业.docx

    ### Java多线程知识点解析 #### 一、Java多线程概述 Java作为一种现代编程语言,内置了...通过以上分析,我们不仅了解了Java多线程的基本概念和技术细节,还通过具体的代码示例深入了解了多线程在实际编程中的应用。

    java多线程面试题59题集合

    以上只是Java多线程面试中可能会遇到的一部分问题,实际的59题集合可能涵盖更多细节和深度,包括线程安全的类、线程通信的高级技术、并发设计模式等。掌握这些知识点,不仅有助于应对面试,更能提高在实际开发中处理...

    java 多线程数据库操作

    总之,Java多线程技术结合分页读取策略能有效提升数据库操作的效率,但同时也需要关注并发控制、资源管理以及异常处理等多个方面的细节,确保程序的稳定性和效率。在实际开发中,应根据项目需求和资源限制,选择合适...

    java 多线程设计模式 进程详解

    《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口...

    实验八:Java多线程

    ### 实验八:Java多线程 #### 一、实验目的与知识点概述 在本实验中,我们将深入了解线程与进程的基本概念、它们之间的区别与联系,并掌握多线程技术在Java中的应用方法。具体包括以下几点: 1. **线程与进程的...

    基于Java的多线程网络爬虫设计与实现.txt

    本文档探讨了在Java环境下设计与实现多线程网络爬虫的技术细节与实践方法。网络爬虫(Web Crawler),是一种自动抓取互联网上网页信息的程序或自动化脚本,其主要任务是遍历整个网站或特定网页集合,提取所需数据并...

    java多线程案例——未完成

    Java多线程是Java编程中的一个重要领域,它允许程序同时执行多个任务,从而提高系统效率和资源利用率。在这个未完成的案例中,我们可能正在探讨如何在Java中创建和管理线程,以及处理多线程环境下的并发问题。下面是...

    最好的java多线程电子书

    ### 最好的Java多线程电子书 #### 一、并发与多任务 - **并发**:指在同一时间段...通过本电子书的学习,读者可以深入理解Java多线程编程的核心概念和技术细节,为开发高性能和健壮的多线程应用程序打下坚实的基础。

    黑马程序员_张孝祥_Java多线程与并发库 视频+代码+资料

    根据给定文件的信息,我们...通过以上知识点的学习,开发者可以深入理解Java多线程编程的核心概念和技术细节,为实际开发工作打下坚实的基础。同时,掌握这些高级并发技术对于构建高性能、高可靠性的应用系统至关重要。

    java实现多线程下载

    2. **Java多线程实现**: - 实现方式一:继承`Thread`类。创建一个新的类,继承自`Thread`,重写`run()`方法,然后创建该类的实例并调用`start()`方法启动线程。 - 实现方式二:实现`Runnable`接口。创建一个类,...

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

    线程可以彼此独立的执行,它是一种实现并发机制的有效手段,可以同时使用多个线程来完成不同的任务,并且一般用户在使用多线程时并不考虑底层处理的细节。程序是一段静态的代码,是软件执行的蓝本。进程是程序的一次...

    java http多线程下载器

    Java HTTP多线程下载器是一种优化的网络资源下载工具,它利用Java编程语言实现了HTTP协议的下载功能,并结合多线程技术以提高下载速度。在本文中,我们将深入探讨Java HTTP多线程下载器的工作原理、核心概念以及实现...

Global site tag (gtag.js) - Google Analytics