java多线程1

进程

程序(任务的执行过程)--- 动态

持有资源(共享内存、共享文件)和线程 ---载体

线程

线程是系统中最小的执行单元,同一个进程中有多个线程,线程共享进程的资源

线程的交互:同步   互斥

=======================================

Java语言对线程的支持

java.lang   class  Thread    和 interface Runnable

public void run()

Thread常用方法

线程的创建

Thread()

Thread(String name)

Thread(Runnable target)

Thread(Runnable target,String name)

线程的方法

启动线程

void start()  

线程休眠

static void sleep(long millis)        

static void sleep(long millis, int nanos)

使其他线程等待当前线程终止

void join()

void join(long millis)

void join(long millis,int nanos)

当前运行线程释放处理器资源

static void yield()

获取线程引用:

返回当前运行的线程引用   static Thread currentThread()

=====================================================

正确停止JAVA 中的线程       

错误的方法  stop方法

正确的方法  使用退出标志

volatile boolean keepRunning = true;

@Override

public void run() {

while (keepRunning) {

// 发动5连击

for (int i = 0; i < 5; i++) {

System.out.println(Thread.currentThread().getName() + "进攻对方[" + i + "]");

// 让出了处理器时间,下次该谁进攻还不一定呢!

Thread.yield();

}

}

广为流传的错误方法  interrupt()

interrupt()方法初衷并不是用于停止线程


=====================================================

线程交替运行实例

public class Actor extends Thread {

public void run() {

System.out.println(getName() + "是一个演员!");

int count = 0;

boolean keepRunning = true;

while (keepRunning) {

System.out.println(getName() + "登台演出:" + (++count));

if (count == 100) {

keepRunning = false;

}

if (count % 10 == 0) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

System.out.println(getName() + "的演出结束了");

}

public static void main(String[] args) {

Thread actor = new Actor();

actor.setName("Mr.Thread");

actor.start();

Thread actressThread = new Thread(new Actress(),"Ms.Runnable");

actressThread.start();

}

}

class Actress implements Runnable {

@Override

public void run() {

System.out.println(Thread.currentThread().getName() + "是一个演员!");

int count = 0;

boolean keepRunning = true;

while (keepRunning) {

System.out.println(Thread.currentThread().getName() + "登台演出:" + (++count));

if (count == 30) {

keepRunning = false;

}

if (count % 10 == 0) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

System.out.println(Thread.currentThread().getName() + "的演出结束了");

}

}

运行结果:

Mr.Thread是一个演员!

Mr.Thread登台演出:1

Mr.Thread登台演出:2

Mr.Thread登台演出:3

Mr.Thread登台演出:4

Mr.Thread登台演出:5

Mr.Thread登台演出:6

Mr.Thread登台演出:7

Mr.Thread登台演出:8

Mr.Thread登台演出:9

Mr.Thread登台演出:10

Ms.Runnable是一个演员!

Ms.Runnable登台演出:1

Ms.Runnable登台演出:2

Ms.Runnable登台演出:3

Ms.Runnable登台演出:4

Ms.Runnable登台演出:5

Ms.Runnable登台演出:6

Ms.Runnable登台演出:7

Ms.Runnable登台演出:8

Ms.Runnable登台演出:9

Ms.Runnable登台演出:10

Mr.Thread登台演出:11

Mr.Thread登台演出:12

Mr.Thread登台演出:13

Mr.Thread登台演出:14

Mr.Thread登台演出:15

Mr.Thread登台演出:16

Mr.Thread登台演出:17

Mr.Thread登台演出:18

Mr.Thread登台演出:19

Mr.Thread登台演出:20

Ms.Runnable登台演出:11

Ms.Runnable登台演出:12

Ms.Runnable登台演出:13

Ms.Runnable登台演出:14

Ms.Runnable登台演出:15

Ms.Runnable登台演出:16

Ms.Runnable登台演出:17

Ms.Runnable登台演出:18

Ms.Runnable登台演出:19

Ms.Runnable登台演出:20

Mr.Thread登台演出:21

Mr.Thread登台演出:22

Mr.Thread登台演出:23

Mr.Thread登台演出:24

Mr.Thread登台演出:25

Mr.Thread登台演出:26

Mr.Thread登台演出:27

Mr.Thread登台演出:28

Mr.Thread登台演出:29

Mr.Thread登台演出:30

Ms.Runnable登台演出:21

Ms.Runnable登台演出:22

Ms.Runnable登台演出:23

Ms.Runnable登台演出:24

Ms.Runnable登台演出:25

Ms.Runnable登台演出:26

Ms.Runnable登台演出:27

Ms.Runnable登台演出:28

Ms.Runnable登台演出:29

Ms.Runnable登台演出:30

Mr.Thread的演出结束了

Ms.Runnable的演出结束了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.什么是进程? 进程是操作系统结构的基础,是一次程序的执行,是系统进行资源分配和调度的一个独立单位。这个解释有点...
    RonaldoWang阅读 3,255评论 0 4
  • 线程 线程是程序执行流的最小单位,在传统的开发中一个程序仅仅拥有一个线程,通俗的讲,单线程程序就是一根肠子通屁眼,...
    rockjh阅读 2,224评论 0 0
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 7,206评论 1 15
  • 该文章转自:http://blog.csdn.net/evankaka/article/details/44153...
    加来依蓝阅读 12,078评论 3 87
  • 昨天刚说完标题栏的这句话,今天便应验了,应验的是后半句。 今天是2016年11月1日,正式恢复因为出差中断了一个多...
    橙子大大阅读 1,675评论 3 2

友情链接更多精彩内容