JAVA线程的三种简单实现

JAVA并发编程的书有很多,对我胃口的就这一本:《Java并发编程从入门到精通》。

不厚,但从入门讲起。

今天实践了三种线程的简单实现。

ThreadA

package demo.thread;

public class ThreadA extends Thread {
	public void run() {
		super.run();
		try {
			Thread.sleep(500L);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("This is thread A.");
	}

}

ThreadB

package demo.thread;

public class ThreadB implements Runnable {
	public void run() {
		try {
			Thread.sleep(600L);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("This is thread B.");
	}

}

ThreadC

package demo.thread;

import java.util.concurrent.Callable;

public class ThreadC implements Callable<String> {
	public String call() throws Exception {
		try {
			Thread.sleep(500L);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("This is thread C.");
		return "thread C";
	}

}

ThreadMain

package demo.thread;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class ThreadMain {
	public static void main(String[] args) {
		ThreadA threadA = new ThreadA();
		threadA.start();

		ThreadB threadB = new ThreadB();
		new Thread(threadB).start();

		ThreadC threadC = new ThreadC();
		FutureTask<String> future = new FutureTask<String>(threadC);
		new Thread(future).start();

		System.out.println("This is main thread.");
		System.out.println("This is main thread begin.");

		try {
			System.out.println("threadC return value: " + future.get());
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}

		System.out.println("This is main thread end.");
	}

}

输出样子

时间: 2024-10-02 08:05:25

JAVA线程的三种简单实现的相关文章

java创建线程的三种方式及其对比

Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实例,即创建了线程对象. (3)调用线程对象的start()方法来启动该线程. package com.thread; public class FirstThreadTest extends Thread{ int i = 0; //重写run方法,run方法的方

LinkedList和List在三种简单算法中效率比较

.Net 框架提供了两种List类型,一种是基于链表的LinkedList, 一种是基于数组的List.那么在实际应用中到底采用哪种List,如何取舍呢?本文对两种类型在队列,堆栈和简单插入三种简单算法中的效率进行了一个比较. 首先先让我们来看一下List的初始容量Capacity对List的性能是否有影响. 测试方法:分别设置初始容量为0,64,255,1024. List插入的最大长度为1000,循环1000次,得到如下结果,单位为ms,下同. 算法/初始容量 0 64 255 1024 队

ps怎么去水印? PS去水印的三种简单方法

  ps怎么去水印?  PS去水印的三种简单方法          方法1:用内容感知移动工具去水印 打开素材图片[ctrl+o],如下图所示. 复制图层[ctrl+j],如下图所示. 单击工具箱中的内容感知移动工具,选中图片中的水印,如下图所示. 往下移,水印不见了,如下图所示. 方法2:用污点修复画笔工具去水印 打开素材图片[ctrl+o],复制图层[ctrl+j],如下图所示.

Java中三种简单注解介绍和代码实例_java

简单Java注解 JDK5提供的简单注解类型只有3个. 这三个都是用来预防错误或者进行提醒的,分别是: 1.Override 2.Deprecated 3.Suppresswarnings 需要注意,JDK5(另一个说法,Tiger)实际上并没有许多内置注解;相反,它允许核心Java支持注解特性的能力. JSR-175中严格规定它用来定义元数据功能. 需要由程序员编写自定义的注解类型,其他JSR标准也编写了一系列标准注解类型. 下面将用实例来深入讲解这三个简单注解. Override 注解 Ov

Java中终止线程的三种方法_java

Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经被废弃,使用它们是极端不安全的! 1.线程正常执行完毕,正常结束 也就是让run方法执行完毕,该线程就会正常结束. 但有时候线程是永远无法结束的,比如while(true). 2.监视某些条件,结束线程的不间断运行 需要while()循环在某以特定条件下退出,最直接的办法就是设一个boolean标志,并通过设置这个标志来控制循环

Java线程机制(三) synchronized和volatile的使用

现在开始进入线程编程中最重要的话题---数据同步,它是线程编程的核心,也是难点,就算我们理解了 数据同步的基本原理,但是我们也无法保证能够写出正确的同步代码,但基本原理是必须掌握的. 要 想理解数据同步的基本原理,首先就要明白,为什么我们要数据同步? public class CharacterDisplayCanvas extends JComponent implements CharacterListener { protected FontMetrics fm; protected ch

java线程的6种状态以及相互转换

一.线程如何创建 创建线程有三种方式:继承Thread类:无返回值的Runnable:有返回值的Callable 示例如下 package com.rcl.platform.demo; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class CreateThread { pub

实现 Java 平台的三种方式

广泛地说,只要能执行 Java bytecode 者,就可以称为 Java 平台(Java platform).大致上,实现 Java 平台的方式有三种,分别是: Java 虚拟机器(Java Virtual Machine,JVM) Java 操作系统(Java Operating System) Java 芯片(Java Chip) 以下就此三种 Java 平台提出解说,并比较之. Java 虚拟机器 所谓的 Java 虚拟机器,指的是在操作系统上执行的一种程序,此程序可以解读 Java b

PHP、JAVA及.NET三种技术的区别

有朋友在问这方面的问题,整理一下给大家帖出来,供初学者在选择技术时有一个参考. 三种编程技术各有优势,我们大概可以从语言.平台这二点来区分: 一.语言: PHP:PHP产生与1994年,其语法混合了C.Java.Perl 和他自创的一些编程语法:PHP是嵌入在HTML中执行的:它也是一种解释性语言.早期的PHP并非完全的面向对象编程语言,到了PHP4以后的版本才开始有了面向对象的概念. JAVA:JAVA产生与1995年,JAVA语言和JAVA平台统称为JAVA:它语法与C语言和C++语言很接近