多线程循环交替输出1到100-【implements Runnable】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/J080624/article/details/52698484

【1】Thread的常用方法

  • 1.start():启动线程并执行相应的run()方法
  • 2.run():子线程要执行的代码放入run()方法中
  • 3.currentThread():静态的,调取当前的线程
  • 4.getName():获取此线程的名字
  • 5.setName():设置此线程的名字
  • 6.yield():调用此方法的线程释放当前CPU的执行权
  • 7.join():在A线程中调用B线程的join()方法,表示:当执行到此方法,A线程停止执行,直至B线程执行完毕,A线程再接着join()之后的代码执行
  • 8.isAlive():判断当前线程是否还存活
  • 9.sleep(long l):显式的让当前线程睡眠l毫秒
  • 10.线程通信:wait() notify() notifyAll()
  • 设置线程的优先级
    • getPriority() :返回线程优先值
    • setPriority(int newPriority) :改变线程的优先级

【2】代码实例

示例代码如下:

package com.web.test;

public class TestThread implements Runnable {
    int i = 1;

    @Override
    public void run() {
        // TODO Auto-generated method stub
        while(true){
        /*指代的为 t,因为使用的是implements方式。若使用继承Thread类的方式,慎用this*/
            synchronized (this) {
            /*唤醒另外一个线程,注意是this的方法,而不是Thread*/
            notify();
            try {
            /*使其休眠100毫秒,放大线程差异*/
            //Thread,currentThread().sleep(0,100);使其休眠100纳秒
                Thread.currentThread().sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
                if (i<=100) {

                    System.out.println(Thread.currentThread().getName() + ":"+ i);
                    i++;
                    try {
                    /*放弃资源,等待*/
                        wait();
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
        }
    }
    }

    public static void main(String[] args) {
        /*只有一个TestThread对象*/
        TestThread t = new TestThread();
        Thread t1 = new Thread(t);
        Thread t2 = new Thread(t);

        t1.setName("线程1");
        t2.setName("线程2");

        t1.start();
        t2.start();

    }
}

输出结果如下:

这里写图片描述

阅读更多

扫码向博主提问

流烟默

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • Java
  • 数据库
  • Linux
  • HTML5
去开通我的Chat快问
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页