`

Java多线程笔记1——多线程两种实现方式

    博客分类:
  • Java
 
阅读更多

    Java中,实现多线程有两种途径:继承java.lang.Thread类或者实现Runnable接口。

1.通过继承Thread实现多线程

 

package net.jerryblog.multithread;
public class MyThread extends Thread {
	private String name;
	
	public MyThread(String name) {
		this.name = name;
	}	
	public void run() {
		for(int i = 0; i < 1000; i++) {
			System.out.println("Thread " + i + "——>" + name);
		}
	}
	public static void main(String[] args) {
		MyThread th1 = new MyThread("Thread A");
		MyThread th2 = new MyThread("Thread B");
		th1.start();
		th2.start();
	}
}

    需要说明的是,线程的启动,需要调用start()方法,不能直接调用run()方法。run()方法只是线程执行的一个模板,也就是说线程按照其中的代码执行。此外,循环中i的范围需要设置大一点,不然的话很可能看到的现象还是A线程执行完了所有次数才开始执行B线程。这是因为现在的电脑配置可能都比较好,设置的循环次数太小的话,可能在一个CPU时间片内,A线程就已经都执行完了。

    对于继承Thread的类的一个实例,不能连续两次调用其start()方法。否则会抛出IllegalThreadStateException

 

package net.jerryblog.multithread;

public class TestIllegalThreadStateException extends Thread {
	public void run() {
		
	}
	
	public static void main(String[] args) {
		TestIllegalThreadStateException th = new TestIllegalThreadStateException();
		th.start();
		th.start();
	}
}

 

    这时就会报异常:

 

Exception in thread "main" java.lang.IllegalThreadStateException
	at java.lang.Thread.start(Thread.java:612)
	at net.jerryblog.multithread.TestIllegalThreadStateException.main(TestIllegalThreadStateException.java:11)

 2.实现Runnable接口

package net.jerryblog.multithread;

public class TestRunnable implements Runnable {
	private String name;
	public TestRunnable(String name) {
		this.name = name;
	}
	public void run() {
		for(int i = 0; i < 500; i++) {
			System.out.println("Thread " + i + "——>" + name);
		}
	}
	
	public static void main(String[] args) {
		TestRunnable tr1 = new TestRunnable("Thread A");
		TestRunnable tr2 = new TestRunnable("Thread B");
		Thread t1 = new Thread(tr1);
		Thread t2 = new Thread(tr2);
		t1.start();
		t2.start();
	}
}
 

 

 

 

 

分享到:
评论
1 楼 garyzhang2681 2012-06-08  
2.实现Runnable接口
有试过t1.start(); t1.start()吗?

相关推荐

    java多线程学习笔记02(csdn)————程序.pdf

    Java多线程编程是开发高并发应用的关键技术之一。在这个学习笔记中,主要讨论了Java中的线程同步机制,包括volatile关键字、synchronized以及Lock接口,特别是ReentrantLock的使用。 首先,对于线程1和线程2的疑惑...

    Java JDK 6学习笔记——ppt简体版

    Java JDK 6学习笔记——PPT简体版是针对初学者和有经验的开发者们的一份宝贵资源,它深入浅出地介绍了Java编程语言的核心概念和技术。这份笔记以PPT的形式呈现,使得学习过程更加直观易懂,适合课堂教学或自我学习。...

    java多线程应用实现方法

    —————————————————————————————————————————————————- java中的多线程 在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runabl

    达内JAVA培训综合笔记

    多线程是Java编程中一个重要的高级特性,笔记中详细介绍了Thread线程类及多线程的使用,以及线程池的概念,这些都对于编写高效、可维护的并发程序至关重要。同时,还涉及了Socket网络编程和双缓冲队列,这些是构建...

    学习笔记——资料

    【Java学习笔记——全面解析】 Java作为一种广泛应用的高级编程语言,是软件开发领域的核心力量。这份"学习笔记——资料"涵盖了Java学习的各个方面,旨在帮助初学者和有经验的开发者巩固基础,提升技能。以下是对这...

    java复习笔记

    Java支持多线程编程,通过Thread类或实现Runnable接口创建线程。线程同步机制包括synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口和相关实现类,如ReentrantLock。 八、网络编程 Java提供了...

    达内助教整理的笔记(JAVA)

    【Java多线程】 Java内置对多线程的支持,通过Thread类或实现Runnable接口创建线程。线程可以并行执行任务,提高程序效率。同时,Java提供了synchronized关键字、wait()、notify()和notifyAll()等机制来控制线程间...

    (完整版)Java笔记总结.pdf

    Java 语言的特点包括简单、安全、跨平台、面向对象、支持多线程等。Java 的三个技术平台分别是 JavaSE、JavaEE、JavaME。 Java 程序的运行环境简称为 JDK,javac.exe 和 java.exe 这两个可执行程序存放在 JDK 安装...

    遇见狂神说的全套java视频笔记

    9. **多线程**:Java内置了对多线程的支持,可以创建Thread类的实例或实现Runnable接口来创建和管理线程,以实现程序的并发执行。 10. **网络编程**:Java提供了Socket和ServerSocket类,用于实现客户端-服务器的...

    CoreJava学习笔记

    10. **多线程**:Java提供内置的多线程支持,使开发者可以方便地开发并发程序。 **运行原理:** Java程序的运行需要通过Java虚拟机(JVM)。Java源代码首先被编译成字节码,字节码是一种中间格式,可以在不同的...

    达内java培训笔记

    8. **多线程**:Java内置了对多线程的支持,你可以通过继承Thread类或实现Runnable接口来创建线程。 9. **文件和目录操作**:Java的`java.io.File`类提供了文件和目录的操作,如创建、删除、重命名以及读取文件属性...

    林信良的“Java学习笔记”ppt

    **Java学习笔记——由林信良带来的编程之旅** 在编程世界中,Java是一种广泛应用的、面向对象的编程语言,以其跨平台的特性、强大的功能和易读性深受开发者喜爱。林信良的“Java学习笔记”PPT为初学者提供了一个...

    Java学习笔记相关

    9. **多线程**:Java内置了对多线程的支持,通过Thread类和Runnable接口可以创建和管理线程。 10. **反射和注解**:反射允许你在运行时检查类、接口、字段和方法的信息,而注解提供了一种元数据方式,可以用于代码...

    java并发编程笔记

    通常情况下,一个进程至少包含一个线程,而Java虚拟机默认有两个线程:主线程`main`和垃圾回收线程`GC`。 #### 二、并发与并行 - **并发**:指在同一时间段内,有多个程序(任务)同时处于已启动到未完成的状态。...

    java学习笔记-基础

    ### Java学习笔记——基础知识详解 #### 一、Java开发环境(JDK)与运行环境(JRE) Java技术的核心在于其强大的跨平台能力,这主要得益于Java的两大环境:JDK(Java Development Kit)和JRE(Java Runtime ...

    java入门基础学习笔记

    Java语言的特性包括简单性、面向对象、分布式、解释性、稳健性、安全性、体系结构中立性、可移植性、高性能、多线程和动态性等。为了能够运行Java程序,我们需要搭建相应的Java语言环境,包括JDK和JRE,并且需要正确...

    Java编程思想笔记(全)

    本章讲解了Swing和JavaFX两种GUI库的使用方法,包括如何创建窗口、布局管理器的使用、事件监听器的注册等内容。通过本章的学习,读者可以了解如何构建具有友好界面的应用程序。 以上内容概括了《Java编程思想笔记》...

    java-demo:java学习笔记,包含多线程,java IO流,java 阻塞IO,非阻塞IO,netty demo

    在这个"java-demo"项目中,我们可以深入学习Java技术,特别是关于多线程、IO流以及两种不同的IO模型——阻塞IO(BIO)和非阻塞IO。此外,还涉及到Netty框架的应用,这是一个高性能、异步事件驱动的网络应用框架,常...

    redis源码阅读笔记(10)——事件

    在Redis源码阅读笔记(10)——事件中,我们将探讨Redis如何利用事件模型来实现非阻塞I/O,以及相关的编程模型如Reactor模式和NIO。 Redis使用了一个基于epoll的事件处理器,epoll是Linux系统提供的一种高效I/O多路...

Global site tag (gtag.js) - Google Analytics