Java线程的基本用法

摘要

  多线程是软件编程中常用的基本技术,本文主要介绍了Java中线程的基本用法,包括线程创建、运行、停止和暂停,还介绍了线程常用的API以及线程的优先级。通过本文的学习,读者可以掌握线程的基本用法。

一、线程的创建及运行

  线程的创建有三种方式:
  1、继承Thread
  2、实现Runnable
  3、实现Callable

1.1、继承Thread

  线程对象类直接继承Thread类,并重写Thread类的run()方法。如下所示:

public class ThreadTest extends Thread{
	@Override
	public void run() {
		// 执行体代码
	}	
}

  该线程对象的运行,如下所示:

public static void main(String[] args) {
	Thread thread01 = new ThreadTest();
	thread01.start();	
}

1.2、实习Runnable

  Runnable是一个接口,线程对象类可以实现该接口,并重写Runnable接口的run()方法。如下所示:

public class ThreadTest implements Runnable{
	@Override
	public void run() {
		// 执行体代码
	}	
}

  该线程对象的运行,如下所示:

public static void main(String[] args) {
	ThreadTest thread01 = new ThreadTest();
	new Thread(thread01, "Thread-name").start();	
}

1.3、实现Callable

  实现Callable接口的线程,创建过程如下:

  •   创建一个线程,创建Callable的实现类,并且重写call方法;
  •   得到Future对象;
  •   获取返回值;
  •   停止服务;
//返回Interger类型
public class ThreadTest implements Callable<Integer>{
	@Override
	public Integer call() {
		//执行体代码
		return Integer;
	}
}

  该线程对象的运行,如下所示:

public static void main(String[] args) {
	ExecutorService ser = Executors.newFixedThreadPool(2);		
	ThreadTest threadTest = new ThreadTest();			
	//获取值
	Future<Integer> result = ser.submit(threadTest);
		
	try {
		int numR = result.get();
	} catch (InterruptedException e) {
		e.printStackTrace();
	} catch (ExecutionException e) {
		e.printStackTrace();
	}
		
	//停止服务
	ser.shutdown();
}

1.4、执行run()与start()的区别

  执行run()时,并不会启动该线程,只是相当于调用了一个普通方法。
  执行start()时,启动该线程,start()方法会在该线程中自动调用到run()方法。

二、常用的线程API

2.1、currentThread()方法

  currentThread()方法返回当前代码段所在的线程。
  ThreadTest.java线程文件:

public class ThreadTest implements Runnable{
	public ThreadTest(){
		System.out.println("ThreadTest的构造函数所在线程:"+Thread.currentThread().getName());
	}

	@Override
	public void run(){
		System.out.println("ThreadTest的run函数所在线程:"+Thread.currentThread().getName());
	}
}

  Client.java程序入口文件:

public class Client{
	public static void main(String[] args){
		ThreadTest thread = new ThreadTest();
		thread.start();
	}
}

  运行结果如下:

ThreadTest的构造函数所在线程:main
ThreadTest的run函数所在线程:Thread-0

  由此可见线程类ThreadTest的构造函数是运行在main线程中的,而ThreadTest的run方法才是运行在ThreadTest线程中的。

三、线程的停止

四、线程的暂停

五、线程优先级

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值