Java多线程(一、线程的使用)

来看看Java多线程相关的类吧。

和其他多数计算机语言不同,Java内置支持多线程编程(multithreaded programming)。

学习多线程,首先需要了解线程和进程的区别,看我上次讲解的  线程和进程的区别

Java的多线程系统建立在Thread类,它的方法以及它的共伴接口Runnable基础上。Thread类封装了线程的执行。既然你不能直接引用运行着的线程的状态,你要通过它的代理处理它,于是Thread实例产生了。为创建一个新的线程,你的程序必须扩展Thread类或者实现Runnable接口。

当Java程序启动时,一个线程立即运行,该线程通常叫做程序的的主线程(main thread),因为它时程序开始时就执行的。主线程主要体现在了以下两点:

  • 它是产生其他子线程的线程
  • 通常它必须最后完成执行,因为它执行各种关闭操作。
首先来看个例子:
public class Test {

	public static void main(String[] args) {
		Thread thread=Thread.currentThread();//获得当前线程的引用
		System.out.println("当前线程的名称:"+thread.getName());
		System.out.println("当前线程的一些信息:名称、优先级、线程组:"+thread);
		//修改当前线程的名称为Tomcat
		thread.setName("Tomcat");
		//修改当前线程的优先级,1-10
		thread.setPriority(10);
		System.out.println("修改后当前线程的一些信息:名称、优先级、线程组:"+thread);
	}
}

运行结果:

当前线程的名称:main
当前线程的一些信息:名称、优先级、线程组:Thread[main,5,main]
修改后当前线程的一些信息:名称、优先级、线程组:Thread[Tomcat,10,main]

在这个程序中,当前线程的引用通过调用Thread类的静态方法currentThread()获得,该引用保存在局部变量中。然后,程序显示了线程的信息。还可以修改线程的名称和优先级,优先级最小为1,最大为10。

下面在看一个例子:

public class Test1 {

	public static void main(String[] args) throws InterruptedException {
		Thread thread=Thread.currentThread();
		System.out.println("开始输出:");
		for(int i=1;i<=5;i++){
			thread.sleep(1000);//让当前线程暂停1秒
			System.out.println(i);
		}
		System.out.println("输出完毕");
	}
}

在这个例子中,第一句代码得到了当前线程的引用,然后开始输出i变量,每输出一次暂停一秒,暂停是sleep()方法来实现的。

Thread类的sleep()方法可能引发一个Interrpted异常。这种情形会在其他线程想要打搅沉睡线程时发生,在实际的程序中,必须灵活处理此类问题。

猜你喜欢

转载自blog.csdn.net/xkfanhua/article/details/80585030