博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何创建并运行java线程
阅读量:6320 次
发布时间:2019-06-22

本文共 1639 字,大约阅读时间需要 5 分钟。

hot3.png

Java语言提供了优秀的多线程支持。单线程的程序只有一个顺序执行流,就如同只雇佣一个服务员的餐厅,他必须做完一件事情之后才可以做下一件事情;
多线程的程序则可以包括多个顺序执行流,之间互不干扰,就如同雇佣多个服务员的餐厅,他们可以同时进行着多件事情。
Java中使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。线程的作用是完成一定的任务,实际上就是执行一段程序代码,这段代码在Java中使用run()方法来封装。
线程创建的两种方式:
一种是创建Thread子类的一个实例并重写run方法,第二种是创建类的时候实现Runnable接口。
1、继承Thread类创建线程类
public class MyThread extends Thread {	public static void main(String[] args) {		new MyThread().start();	}		@Override	public void run() {		System.out.println("MyThread running");	}}
一旦线程启动后start方法就会立即返回,而不会等待到run方法执行完毕才返回。就好像run方法是在另外一个cpu上执行一样。当run方法执行后,将会打印出字符串MyThread running。
以创建Thread匿名类的方式来开启线程:
public class ThreadTest2 {		public static void main(String[] args) {		Thread thread = new Thread() {			@Override			public void run() {				System.out.println("Thread running");			}		};				thread.start();	}}
2、实现Runnable接口创建线程类
public class MyRunnable implements Runnable {	@Override	public void run() {		System.out.println("MyRunnable running");	}		public static void main(String[] args) {		new Thread(new MyRunnable()).start();	}}
创建一个实现了Runnable接口的线程匿名类
public class MyRunnable2 {	public static void main(String[] args) {		Runnable runnable = new Runnable() {			public void run() {				System.out.println("MyRunnable2 running");			}		};				new Thread(runnable).start();	}}
需要注意的是,尽管启动线程的顺序是有序的,但是执行的顺序并非是有序的。例如启动10个线程,1号线程并不一定是第一个将自己名字输出到控制台的线程。这是因为
线程是并行执行而非顺序的。Jvm和操作系统一起决定了线程的执行顺序,他和线程的启动顺序并非一定是一致的。
线程的启动是调用start()方法,虽然调用run()也会有输出,但是,事实上run()方法并非是由刚创建的新线程所执行的,而是被创建新线程的当前线程所执行的
当创建一个线程的时候,有必要的话可以给线程起一个名字。它有助于我们区分不同的线程。默认情况下,主线程的名字为main,用户启动的多条线程的名字一次为Thread-0、Thread-1......

转载于:https://my.oschina.net/xiaomaoandhong/blog/117863

你可能感兴趣的文章
wordpress admin https + nginx反向代理配置
查看>>
管理/var/spool/clientmqueue/下的大文件
查看>>
mysql dba系统学习(20)mysql存储引擎MyISAM
查看>>
centos 5.5 64 php imagick 模块错误处理记录
查看>>
apache中文url日志分析--php十六进制字符串转换
查看>>
浅谈代理
查看>>
基于jquery实现的超酷动画源码
查看>>
fl包下的TransitionManager的使用
查看>>
Factorialize a Number
查看>>
防HTTP慢速攻击的nginx安全配置
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
自动生成四则运算题目
查看>>
Android学习系列(5)--App布局初探之简单模型
查看>>
git回退到某个历史版本
查看>>
HTML5基础(二)
查看>>