Java线程基础

一个线程运行一个顺序程序。

在java中,线程一般是java.lang.Thread的子类,它提供了一些方法来创建线程、启动线程。

挂起线程、等待线程完毕。

首先,创建一个实现Runnable接口的类,该类的run()方法完毕全部的工作。比如。以下是一个打印字符串的简单线程。

package lou.thread;

public class HelloWorld implements Runnable {
	String message;

	public HelloWorld(String m) {
		this.message = m;
	}
	@Override
	public void run() {
		System.out.println(message);
	}

}

我们能够以一个Runnable对象作为參数来调用Thread类的构造函数,将Runnable对象转变为线程。例如以下所看到的:

String m = "Hello world form Thread " + i;
Thread thread = new Thread(new HelloWorld(m));

java提供一种语法上的快捷方式,称为匿名内部类,它能让你无需显示地定义HelloWorld类:

final String m = "Hello world form Thread " + i;
		thread = new Thread(new Runnable() {
			@Override
			public void run(){
				System.out.println(m);
			}
		});

上面的程序段创建一个实现Runnable接口的匿名类,其run()方法的行为已描写叙述,当线程创建之后,它须要被启动:

thread.start();

这种方法能使线程执行。

调用该方法的线程将马上返回。假设调用者打算等待线程结束。怎必须连接线程:

thread.join();

此时调用者会被堵塞直到线程的run()方法返回。

以下给出一个可以初始化多线程、启动多线程、等待多线程完毕、然后打印一条消息的方法。

该方法创建一个线程组成的数组。并使用匿名内部类

语法进行初始化。在循环结束时。则创建了一个休眠线程组成的数组。

	public static void main(String[] args) throws InterruptedException {
		Thread[] thread = new Thread[8];
		for (int i = 0; i < thread.length; i++) {
			final String message = "Hello from thread " + i;
			thread[i] = new Thread(new Runnable() {
				@Override
				public void run() {
					System.out.println(message);
				}
			});
		}
		for (int i = 0; i < thread.length; i++) {
			thread[i].start();
		}
		for (int i = 0; i < thread.length; i++) {
			thread[i].join();
		}
	}
时间: 2024-10-29 10:47:40

Java线程基础的相关文章

Java 线程基础

目录 Java 线程基础  一.线程简介  二.线程基本用法  三.线程间通信  四.线程状态  参考资料 Java 线程基础 ?? 本文以及示例源码已归档在 javacore 一.线程简介 什么是进程 什么是线程 进程和线程的区别 二.线程基本用法 创建线程 线程休眠 线程礼让 终止线程 守护线程 FAQ 三.线程间通信 wait/notify/notifyAll join 管道 四.线程状态 参考资料 一.线程简介 什么是进程 简言之,进程可视为一个正在运行的程序.它是系统运行程序的基本单位

并发编程总结——java线程基础1

最近没事,顺便看看java并发编程的东西,然后总结纪录下来,大家如果能看到帮忙指正指正哈哈,另外一方面也为以后自己回顾的时候可以看看. 关于并发编程,准备从几个点切入: 1.java线程几本知识 2.juc原子类 3.锁 4.juc集合 5.线程池 ------------------------------------------------------------------- 分割线开始.... 说到多线程,java中超父类Object中有wait()和notify()方法,包括Runna

Java线程基础知识(状态、共享与协作)

1.基础概念 CPU核心数和线程数的关系 核心数:线程数=1:1 ;使用了超线程技术后---> 1:2 CPU时间片轮转机制 又称RR调度,会导致上下文切换 什么是进程和线程 进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源 线程:CPU调度的最小单位,必须依赖进程而存在. 澄清并行和并发 并行:同一时刻,可以同时处理事情的能力 并发:与单位时间相关,在单位时间内可以处理事情的能力 高并发编程的意义.好处和注意事项 好处:充分利用cpu的资源.加快用户响应的时间,程序模

java线程基础梳理

java线程 概述 进程:运行时概念,运行的应用程序,进程间不能共享内存 线程:应用程序内并发执行的代码段,可以共享堆内存和方法区内存,而栈内存是独立的. 并发理解:在单核机器上,从微观角度来看,一段时间内cup只能执行一个任务,但是因为cup在只执行一段代码段的时候大部分的时间是处于等待程序的,所以可以再开几条程序,然后通过轮询机制,让cpu执行多个进程,从宏观角度来看就是所谓的并发.如果机器是多核,那么就是真正的并发. 线程调度模型 线程的调度模型分为: 分时调度模型和抢占式调度模型,Jav

JAVA线程----基础

线程简介: 现在个人计算机操作系统多采用多任务和分时设计.一般可以在 同一时间内执行多个程序的操作系统都有进程的概念.一个进程就是一个执行中的程序,而每一个进程都哟自己独立的一块内存空间.一组系统资源.在进程概念中,每一个进程的内部数据和状态都是完全独立的.Java程序通过流控制来执行程序流,程序中单个顺序流控制称为线程:多线程则是指单个程序中可以同时运行多个不同的线程,执行不同的任务.多线程意味着一个程序的多行语句几乎可以在同一时间内运行的. 线程与进程相似,是一段完成某个特定功能的代码,是程

java 线程基础学习

今天趁空闲时间看了点线程方面的知识 首先看的是volatile关键字,按照我之前书上看到的一点知识,自己的理解是,volatile关键字会阻止编译优化,因为cpu每次读取数据是并不是从高速缓存中读取,而是取内存中的数据.这是自己的一点简单的理解,可能有错误.我之前只是看了点线程方面的知识,只是在自己写代码的时候很少(根本没用到),就是自己学习的时候跟着书上敲了代码. 实习的时候要我写个压力测试,1000个线程同时发请求,统计请求失败的次数,我用了volatile关键字,但是感觉有点问题,今天就测

【Java并发专题之二】Java线程基础

使用线程更好的提高资源利用率,但也会带来上下文切换的消耗,频繁的内核态和用户态的切换消耗,如果代码设计不好,可能弊大于利. 一.线程 进程是分配资源的最小单位,线程是程序执行的最小单位:线程是依附于进程的,一个进程可以生成多个线程,这些线程拥有共享的进程资源: 二.线程生命周期(相关API)1.5个阶段6种状态 5个阶段:新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead). 6种状态: public enum State { /** * T

JAVA 线程基础(上)

1.进程是操作系统的一个任务是一块包含了某些资源的内存区域操作系统利用进程把它的工作划分为一些功能单元 进程中所包含的一个或多个执行单元称为线程 2.一个进程至少一个线程,线程通常用于在一个程序中需要同时完成多个任务 3.多个线程同时运行只是我们感官上的一种表现,线程是以并发运行的 并发顾名思义就是线程在计算机cpu上运行的时间片段 微观上走走停停宏观上都在运行 这种现象就是并发 //创建线程1 public class textThread extends Thread{ public voi

JAVA线程基础(下)

前面说了如何建立线程 现在我们来看下线程如何工作的 示例: private ServerSocket server; //保存所有客户端输出流的集合 private List<printwriter> allOut;public Server(){ //创建ServerSocket的同时学要申请服务端口这个端口不能与其他使用TCP协议应用程序冲突 否则会抛出异常 server = new ServerSocket(8088); //申请8088端口 allOut = new ArrayLIST