美文网首页
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多线程1

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