博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java线程
阅读量:5334 次
发布时间:2019-06-15

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

线程有多个操作状态:

线程的状态:准备好了一个多线程的对象

就绪状态:调用了start方法,等待CPU调度
运行状态:执行run()方法
阻塞状态:暂时停止执行,可能将资源交给其他线程使用
终止状态:线程销毁

一个进程可以包括多个线程。

在Java中,线程的实现有两种:

1、继承Thread类
2、实现Runnable接口
Thread类:继承Thread类必须重写run()方法。

 使用Thread类实现进程如下:

定义线程:

public class MyThread extends Thread {		private String name;	public MyThread(String name) {		this.name=name;	}	public void run() {		for (int i = 0; i < 1000; i++) {			System.out.println(name+":"+i);		}		super.run();	}}

 用MyThread的start方法启动线程。

public class ThreadDemo01 {	public static void main(String[] args) {		MyThread t1=new MyThread("A");		MyThread t2=new MyThread("B");//		t1.run();//		t2.run(); 		//线程通过start方法启动		t1.start();		t2.start();			}}

 


使用Runnable接口实现线程:

接口的run方法在线程启动后自动执行。

public class MyRunable   implements Runnable{		private String name;	public MyRunable(String name) {		this.name=name;	}		public void run() {		for (int i = 0; i < 1000; i++) {			System.out.println(name+":"+i);		}	}}

 启动线程:因为Runnable并没有start方法,只能实例化Thread类来启动线程

public class ThreadDemo01 {	public static void main(String[] args) {		MyRunable r1=new MyRunable("A");		MyRunable r2=new MyRunable("B");		Thread t1=new Thread(r1);		Thread t2=new Thread(r2);		t1.start();		t2.start();	}}

 


线程的常用方法:

1、取得线程名称:getName()
2、取得当前线程对象:currentThread()
3、判断线程是否启动:isAlive()
4、线程的强行运行:join()
5、线程的休眠:sleep()
6、线程的礼让:yield()

class RunnableDemo implements Runnable{		private String name;		public RunnableDemo(String name) {		this.name=name;	}	public void run() {		for (int i = 0; i <20; i++) {//			try {//				Thread.sleep(1000);//			} catch (InterruptedException e) {//				e.printStackTrace();//			}			System.out.println(name+":"+i);			if (i==10) {				System.out.println("礼让另一个线程****************");				Thread.yield();							}			//			System.out.println("当前线程对象:"+Thread.currentThread().getName());					}	}}public class ThreadDemo02 {	public static void main(String[] args) {		RunnableDemo r=new RunnableDemo("A");		RunnableDemo r2=new RunnableDemo("B");		Thread t=new Thread(r);		Thread t2=new Thread(r2);//		System.out.println(t.isAlive());		t.start();		t2.start();//		System.out.println(t.isAlive());			}}

 

转载于:https://www.cnblogs.com/zhhy236400/p/10490510.html

你可能感兴趣的文章
Spring Bean InitializingBean和DisposableBean实例
查看>>
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>
移动端 响应式、自适应、适配 实现方法分析(和其他基础知识拓展)
查看>>
selenium-窗口切换
查看>>
使用vue的v-model自定义 checkbox组件
查看>>
[工具] Sublime Text 使用指南
查看>>
Hangfire在ASP.NET CORE中的简单实现方法
查看>>
Algorithm——何为算法?
查看>>
Web服务器的原理
查看>>
小强升职计读书笔记
查看>>
常用的107条Javascript
查看>>
#10015 灯泡(无向图连通性+二分)
查看>>
忘记root密码,怎么办
查看>>