`

Java线程的创建

阅读更多

很多书上介绍Java的线程创建有两种方式,一种是继承Thread类,一种是实现Runnable接口。实际上Runnable接口只有一个run方法,Thread也是实现了Runnable接口的,但是无论哪种方式都必须借助Thread类,下面列举了创建线程的两种方式:

->方式一:继承Thread类

public class ChildThread extends Thread {

	/**
	 * 覆盖run方法,编写线程执行的核心代码
	 */
	@Override
	public void run() {
		System.out.println("线程" + Thread.currentThread().getName() + "执行了...");
	}
	
	public static void main(String[] args) {
		//启动线程
		new ChildThread().start();
	}
	
}

->方式二:实现Runnable接口,将Runnable对象作为Thread的目标对象(targetObject)

public class ThreadTargetObject implements Runnable {

	/**
	 * 实现run方法,编写线程执行的核心代码
	 */
	@Override
	public void run() {
		System.out.println("线程" + Thread.currentThread().getName() + "执行了...");
	}

	public static void main(String[] args) {
		//启动线程
		new Thread(new ThreadTargetObject()).start();
	}
}

  注意:必须通过start方法来启动线程,直接调用run方法是无法异步执行线程的,因为start方法会真正调用native方法创 建线程,并调用run方法。

 

当然,以上方法都是我们自己通过new关键字来创建的线程对象,很多时候我们在编程多线程程序的时候会用到线程池,因为创建过多的线程会消耗系统很多的资源,而且每次创建和销毁都会占用一些CPU时间,每个线程运行起来也会变慢,线程池会帮助我们创建线程和分配线程,实现线程对象的重用,这样会更高效,JDK5以后加入了并发包,也就是java.lang.concurrent包,我们也没必要自己去写线程池了,下面是线程池的使用代码:

package com.cugxw.thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;

public class ThreadPoolTest {
	public static void main(String args[]) throws InterruptedException {
		
		System.out.println("-----------------------测试newFixedThreadPool----------");
		
		// 在线程池中创建3个线程
		ExecutorService execs = Executors.newFixedThreadPool(3);
		// 创建100 个线程目标对象
		for (int index = 0; index < 10; index++) {
			Runnable run = new ThreadTO(index);
			// 执行线程目标对象
			execs.execute(run);
		}
		execs.shutdown();
		
		System.out.println("-----------------------测试newCachedThreadPool-------");
		
		//使用线程池cache策略
		ExecutorService execsCached = Executors.newCachedThreadPool();
		// 创建10 个线程目标对象
		for (int index = 0; index < 10; index++) {
			Runnable run = new ThreadTO(index);
			// 执行线程目标对象
			execsCached.execute(run);
		}
		execsCached.shutdown();
		
		System.out.println("-----------------------测试newScheduledThreadPool------");
		
		// 在线程池中创建3个线程
		ExecutorService execsSche = Executors.newScheduledThreadPool(3);
		// 创建10 个线程目标对象
		for (int index = 0; index < 10; index++) {
			Runnable run = new ThreadTO(index);
			// 执行线程目标对象
			execsSche.execute(run);
		}
		execsSche.shutdown();
		
		System.out.println("-----------------------测试defaultThreadFactory-------");
		
		//获取一个线程工厂类,用于创建新的线程
		ThreadFactory tf = Executors.defaultThreadFactory();
		tf.newThread(new ThreadTO(100)).start();
		tf.newThread(new ThreadTO(101)).start();
		tf.newThread(new ThreadTO(102)).start();
		tf.newThread(new ThreadTO(103)).start();
		tf.newThread(new ThreadTO(104)).start();
		
	}
}

// 线程目标对象
class ThreadTO implements Runnable {
	int index = 0;

	public ThreadTO(int index) {
		this.index = index;
	}

	@Override
	public void run() {
		System.out.println("线程:" + Thread.currentThread().getName() 
				+ "调用了目标对象" + index);
	}
}

 

分享到:
评论

相关推荐

    Java线程创建与管理:深入理解与实践指南

    ### Java线程创建与管理:深入理解与实践指南 #### 引言 多线程作为Java程序设计中的重要概念之一,使开发者能够构建并行执行的任务,进而提高程序的效率和响应速度。Java语言提供了丰富的工具和技术来支持线程的...

    Java线程创建的四种方式

    Java线程是并发编程的基础,它允许程序同时执行多个任务,极大地提高了程序的效率和响应速度。在Java中,有四种主要的线程创建方法,它们各有特点,适应不同的应用场景。接下来,我们将深入探讨这四种方式及其使用...

    java线程创建 ThreadTester.java

    线程最基本的知识,主要是创建线程,等等。

    java线程学习笔记

    Java 线程创建有两种方法: 1. 继承 Thread 类,重写 run 方法:通过继承 Thread 类并重写 run 方法来创建线程,这种方法可以使线程具有自己的执行逻辑。 2. 实现 Runnable 接口:通过实现 Runnable 接口来创建线程...

    Java建立一个单线程的实例.rar

    在Java编程语言中,线程是程序执行...通过这个基础的Java线程创建实例,新手可以学习到线程的基本概念和操作。进一步深入,可以研究更复杂的并发控制、线程池管理和线程安全编程,这些都是Java多线程开发中的核心技能。

    在Java中创建线程有两种方法

    在Java编程语言中,创建线程是实现并发执行任务的关键步骤。Java提供了两种主要的方法来创建线程,分别是直接继承自`Thread`类和实现`Runnable`接口。这两种方法各有其特点和适用场景。 1. **继承Thread类**: 当...

    java线程69433.doc

    【Java线程创建与启动】 创建Java线程主要有两种方式: 1. 扩展`java.lang.Thread`类:自定义Thread类,覆盖`run()`方法。例如: ```java class MyThread extends Thread { public void run() { // 代码执行逻辑 ...

    java线程.pdf

    根据提供的信息,我们可以推断出这份文档主要关注的是Java线程的相关内容。下面将围绕“Java线程”这一主题展开详细的介绍与解释。 ### Java线程基础 在Java语言中,线程是程序执行流的基本单元。一个标准的Java...

    Java线程状态流转图

    该图形展示了Java线程从创建到终止的整个生命周期,并详细介绍了每种状态的特点和转换规则。 NEW(初始化状态) 在Java线程的生命周期中,NEW是最初始的状态。在这个状态下,线程对象已经创建,但尚未启动。只有...

    Java使用Callable和Future创建线程操作示例

    此外,Java中的线程创建方式还包括使用Runnable接口、Thread类、Executor框架等。不同的线程创建方式都有其优缺,需要根据实际情况选择合适的线程创建方式。 本文主要介绍了Java使用Callable和Future创建线程操作的...

    Java线程详解大全

    Java线程是并发编程的核心部分,它允许程序在同一时间执行多个独立的任务,从而提高系统效率和响应速度。本文将深入探讨Java线程的概念、生命周期、实现方式以及相关的同步机制。 首先,理解线程的基本概念至关重要...

    java线程实例 各种小Demo

    Java线程是多任务编程的重要概念,它允许程序同时执行多个独立的任务,从而提高系统效率和响应速度。在Java中,线程可以分为用户线程和守护线程,前者是程序运行的基础,而后者是在所有用户线程结束时才终止的后台...

    Java线程.ppt

    学习Java线程,理解其创建、状态转换、调度和控制,以及如何处理线程间的互斥和同步,对于开发高效、稳定的并发程序至关重要。通过深入研究这些概念,开发者能够编写出更符合现代计算需求的高质量软件。

    java 线程池源代码

    Java线程池是一种高效管理线程的机制,它允许开发者预先创建一定数量的线程,然后根据需求将任务提交到线程池中进行执行。线程池的核心在于它能够有效地控制运行的线程数量,避免因为频繁创建和销毁线程而产生的性能...

    Java线程使用教程

    Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的并发性和效率。本教程将深入探讨Java线程的使用,帮助开发者掌握这一关键技术。 一、线程基础 1. **线程的概念**:线程...

    java线程深入解析

    本文将深入解析Java线程的相关知识点,包括线程的定义、创建、状态管理、线程同步和安全问题。 1. **线程定义** 在Java中,线程是进程中的单一顺序控制流,是程序执行的基本单元。线程在进程的上下文中运行,共享...

    Java线程(第三版)

    《Java线程(第三版)》是一本深入探讨Java线程技术的专业书籍,旨在帮助开发者理解和掌握Java平台上的多线程编程。Java线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而充分利用系统资源,提高程序的...

    java tcp server 创建线程监听端口,创建线程处理连接

    下面将详细讲解如何利用Java创建一个TCP服务器,使用线程来监听端口并处理连接。 一、TCP服务器基础 TCP是一种面向连接的、可靠的传输协议,它保证了数据包在传输过程中的顺序和完整性。在Java中,我们可以使用`...

    JAVA线程dump的分析

    JAVA线程dump的分析 JAVA线程dump是指在JAVA程序中,当前线程的状态和调用堆栈的快照,能够帮助开发者了解当前程序的执行情况,诊断问题和性能瓶颈。生成JAVA线程dump的方法在不同的操作系统下是不同的,在Windows...

    java多线程Demo

    Java线程有10个优先级(MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY),默认优先级是NORM_PRIORITY。但是,线程优先级并不保证绝对的执行顺序,操作系统调度策略可能影响实际执行顺序。 7. join()方法: 一个线程...

Global site tag (gtag.js) - Google Analytics