`

关于java线程类

    博客分类:
  • java
阅读更多

关于java线程类

 

一、如何启动一个线程?

 

1、继承Thread类,覆写run方法,实例化之后直接调用实例的start方法

/**	
 * 线程类实现方法1:继承Thread类,覆写run方法
 * @author  Walter.Huang
 * @create date 2014-12-8
 */
public class Runner extends Thread {
	
	@Override
	public void run() {
		super.run();
		try {
			System.out.println("I'm "+this.getName()); //线程名称
			System.out.println("I'm runing!");
			TimeUnit.SECONDS.sleep(3); //线程睡3秒
			System.out.println("I stopped!");
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
	}
	
	public static void main(String[] args) {
		Runner runner =new Runner();//实例化
		runner.start();//调用start方法启动线程
	}
	
}

 

2、类实现Runnable接口,实现run方法,通过该类构造一个Thread类,调用Thread类的start方法启动线程

/**	
 * 线程类实现方法2:实现Runnable接口,覆写run方法
 * @author  Walter.Huang
 * @create date 2014-12-8
 */
public class Runner implements Runnable {
	
	@Override
	public void run() {
		try {
			System.out.println("I'm runing!");
			TimeUnit.SECONDS.sleep(3); //线程睡3秒
			System.out.println("I stopped!");
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
	}
	
	public static void main(String[] args) {
		Runner runner =new Runner();//实例化
		Thread thread =new Thread(runner); //构造一个Thread
		thread.start();//调用start方法启动线程
	}
	
}

 

 沉思片刻:java线程类实现直接继承Thread类看似简单一点,但是java只支持单继承,而可以实现多个接口,所以,如果该业务类需要继承一个父类来实现某种功能,使用实现Runnable接口的方式去实现线程类是非常方便的。

 

二、AtomicBoolean用原子方式更新的 boolean 值

import java.util.concurrent.atomic.AtomicBoolean;

/**
 * 用原子方式更新的 boolean值实例
 * @author  Walter.Huang
 * @create date 2014-12-8
 */
public class Worker implements Runnable  {
	
	private String name;
	public static AtomicBoolean atomicBoolean =new AtomicBoolean(false);

	public Worker(String wkName){
		setName(wkName);
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	

	public static void main(String[] args) {
		Worker w1=new Worker("w1");
		new Thread(w1).start();//启动线程

		Worker w2=new Worker("w2");
		new Thread(w2).start();//启动线程

		Worker w3=new Worker("w3");
		new Thread(w3).start();//启动线程
	}

	@Override
	public void run() {
		if(atomicBoolean.compareAndSet(false, true)){
			System.out.println(this.getName()+"开工!");
			try {
				System.out.println(this.getName()+"工作ing>>>");
				Thread.sleep(3000);
			} catch (InterruptedException e) {
			}
			System.out.println(this.getName()+"收工!");
			atomicBoolean.set(false);
		}else{
			System.out.println("已经有个在工作了!"+this.getName()+"不可以工作");
		}
	}
	
	
}

 

运行结果:

  w1开工!

  已经有个在工作了!w3不可以工作

  已经有个在工作了!w2不可以工作

  w1工作ing>>>

 

  w1收工!

 

 

 

分享到:
评论

相关推荐

    java 线程工具类 java 线程工具类

    java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具类 java 线程工具类java 线程工具...

    java 线程相关工具类

    java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类.java 线程相关工具类....

    线程 JAVA java线程 java线程第3版 java线程第2版第3版合集

    电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...

    java 线程 dump 分析工具 2.3.3

    它提供关于发现的线程转储的统计信息,提供关于锁定监视器和等待线程的信息。它可以在线程之间进行区分,以寻找相似之处,并具有“长运行线程”检测。如果记录了类的直方图,它还提供了线程转储中的堆对象的概述。

    java线程.pdf

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

    JAVA 线程类应用

    Java线程类应用是Java编程中的重要组成部分,它关乎到多任务处理和程序并发执行的能力。在Java中,线程是程序执行的最小单位,它允许一个程序中有多个执行流同时进行,使得程序能更高效地利用系统资源,特别是在处理...

    java多线程Demo

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

    关于线程(java)两天的课件

    Java线程有五种基本状态:新建(New)、可运行(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Terminated)。这些状态之间的转换是通过调用特定的方法,如start()、sleep()、join()、wait()、notify()等...

    Java线程详解大全

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

    Java线程.ppt

    Java线程是Java编程中的重要概念,特别是在多核处理器和并发处理中不可或缺。Java线程允许程序在同一时间执行多个不同的任务,从而提高了程序的效率和响应性。在燕山大学信息学院计算机系的课程中,李峰教授讲解了...

    java线程实例 各种小Demo

    Java线程是多任务编程的重要概念,它允许程序同时执行多个独立的任务,从而...在"线程池.rar"和"线程实例"这两个文件中,你可以找到关于这些概念的具体示例代码,通过学习和实践,可以深入理解Java线程的运用和管理。

    Java线程使用教程

    通过学习这个Java线程使用教程,你将能够熟练地在多线程环境中编写高效、安全的Java程序,理解线程同步、通信、线程池以及并发工具类的使用。阅读提供的"Java线程.pdf"和"说明.txt"文件将帮助你更深入地掌握这些知识...

    Java线程(第三版)

    线程优先级和守护线程也是Java线程中的一部分,`Thread`类提供了设置优先级的方法,高优先级的线程更有可能获得CPU执行时间。守护线程是一种特殊的线程,它不会阻止JVM的退出,除非所有的非守护线程都已结束。 书中...

    JAVA线程学习(源代码)

    本资源"JAVA线程学习(源代码)"提供了关于Java线程的源代码示例,帮助我们深入理解和实践线程的使用。 首先,我们要理解Java中的线程模型。Java线程由`java.lang.Thread`类或`java.util.concurrent.Executor`框架来...

    java线程文档大全

    这份“java线程文档大全”包含了关于Java线程的广泛知识,以下是其中的一些关键点: 1. **线程概念**:线程是程序执行的最小单位,每个线程都有自己的程序计数器、寄存器和局部变量,共享同一块内存空间。在Java中...

    java线程深入解析

    创建Java线程有两种方式:继承`Thread`类并重写`run()`方法,或者实现`Runnable`接口并提供`run()`方法。当线程对象被创建并调用`start()`方法后,线程进入可运行态,由Java的线程调度器决定何时执行`run()`方法。 ...

    Java多线程知识点总结

    随着Java版本的更新,Java也引入了新的并发工具类,例如java.util.concurrent包下的并发集合、原子操作类以及各种并发控制类,这些工具类提供了比传统synchronized和volatile关键字更强大、更灵活的线程同步控制机制...

    java多线程进度条

    Java通过Thread类和Runnable接口来支持多线程。创建一个新线程通常有两种方式:继承Thread类并重写run()方法,或者实现Runnable接口并提供run()方法。在run()方法中编写线程执行的代码。 进度条通常由主线程负责...

    java线程.rar

    Java线程是Java编程语言中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,线程是通过类`Thread`或实现`Runnable`接口来创建和管理的。Java线程模型是基于操作系统的原生...

    简单的java线程demo

    Java线程是多任务编程的重要概念,特别是在大型的、复杂的软件系统中,它允许程序同时执行多个不同的任务,提升程序的并发性和效率。本示例"简单的Java线程demo"旨在帮助初学者理解如何在Java中创建和管理线程。 在...

Global site tag (gtag.js) - Google Analytics