美文网首页
java多线程1

java多线程1

作者: 柳仁儿 | 来源:发表于2017-08-29 15:03 被阅读0次

进程

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

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

线程

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

线程的交互:同步   互斥

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

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的演出结束了

相关文章

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • (五) volatile关键字

    Java多线程目录 1 背景 理解Java多线程的内存抽象逻辑请阅读java多线程内存模型,当代操作系统,处理器为...

  • Java多线程高级特性(JDK8)

    [TOC] 一、Java多线程 1.Java多线程基础知识 Java 给多线程编程提供了内置的支持。一条线程指的是...

  • Java多线程的使用通信和控制

    Java多线程的使用通信和控制 1. Java多线程的使用和通信 实现多线程有两种方式 1. 继承Thread父类...

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • Android中的多线程

    1. Java多线程基础 Java多线程,线程同步,线程通讯 2. Android常用线程 HandlerThre...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

  • java线程&和各种奇奇怪怪的锁

    1、Java线程 一、Java多线程常用的两种实现方法 1、 继承Thread类 子类继承Thread类具备多线程...

  • 10.3多线程详解

    Java高级-多线程 多线程创建 多线程通讯 线程池 1.多线程创建 thread/runnable图:继承Thr...

  • 2018-10-16

    Java编程思想 1~12 java多线程编程核心技术 23~57

网友评论

      本文标题:java多线程1

      本文链接:https://www.haomeiwen.com/subject/pjkodxtx.html