【Java基础】线程基本教程

本文详细介绍了Java中创建线程的方法,包括实现Runnable接口和继承Thread类,并阐述了线程之间的调用、线程睡眠、合并线程、打断线程及线程状态的相关概念。同时,通过实例演示了如何在主线程和子线程中使用Thread.sleep方法,以及如何通过join方法合并线程。此外,还介绍了线程的优先级调整、常用基本方法以及如何在Java中有效管理多线程。

线程是一个程序中的不同的执行的路径, 每一个分支都叫线程。

进程只是一个静态的概念,在我们机会里面其实运行都是线程。进程(主线程)包含很多线程。

Java创建线程有2种方式:

1、实现Runnable接口(推荐):

class Runnable1 implements Runnable{

	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			System.out.println("in Runnable1 i="+i);
		}
	}
	
}

2、继承Thread类:

class Runnable2 extends Thread{
	
	@Override
	public void run() {
		for (int i = 0; i < 200; i++) {
			System.out.println("in Runnable2 i="+i);
		}
	}
	
}

线程的调用:

//实现Runnable接口的调用方式
Runnable1 r=new Runnable1();
Thread t=new Thread(r);
t.start();//启动一个线程   //问题1:启动一个线程,让线程去执行run()方法中的代码,与直接去调用run()是有巨大的区别的
//调用继承extends Thread类的线程
Runnable2 r=new Runnable2();
r.start(); //启动一个线程

线程睡眠sleep:

Thread.sleep(1000); //表示当前线程睡眠1000毫秒
//如果写在主线程中,就是让主线程睡眠;反之如果写在子线程run方法中,就是让子线程睡眠
package org.zhanghua.javase.demo.thread;


/**
 * 线程演示sleep
 * @author Edward
 *
 */
public class SleepTest{
	 
	public static void main(String[] args) {
		System.out.println("sleep前:"+System.currentTimeMillis());
		try {
			Thread.sleep(1000); //表示当前线程(主线程)睡眠1000毫秒
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("sleep后:"+System.currentTimeMillis());
		//实现Runnable接口的调用方式
		Runnable1 r=new Runnable1();
		Thread t=new Thread(r);
		t.start();//启动一个线程  
		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(1000); //表示当前线程(主线程)睡眠1000毫秒
			} catch (InterruptedException e) {
				e.printStackTrace();
			} 
			System.out.println("in main i="+i);
		}
	}
}
/**
 * 线程类
 * @author Administrator
 *
 */
class Runnable1 implements Runnable{

	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(500); //让当前线程(Runnable1)睡眠1000毫秒
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("in Runnable1 i="+i);
		}
	}
	
}

合并线程Join:

join()方法表示合并,相当于方法调用。


打断线程有2种方法:

interrupt() 不推荐 表示打断线程(不友好)

stop() 积不推荐 强制结束线程(直接关闭,比如杀死进程)


退让线程Yield():

yield() 标识退出当前线程进入就绪状态,让给别的线程执行一下。

线程状态图:

205929_G6Iv_2558692.jpg

线程优先级:

线程优先级由数字表示,范围1-10,一个线程的缺省优先级是5

//Thread.MIN_PRIORITY=1

//Thread.MAX_PRIORITY=10

//Thread.NORM_PRIORITY=5

设置线程优先级方法和获取线程优先级方法

int getPriority() 获取线程优先级

void setPriority(int newPriority) 设置线程优先级


线程常用基本方法:

211112_oh28_2558692.jpg


转载于:https://my.oschina.net/Auhgnahz/blog/548695

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值