J2SE视频笔记(8)

J2SE视频笔记(8):

第三十二讲:Java多线程(2)

  • 线程常用方法:
  • (1):getName方法,返回该线程的名称
  • (2):currentThread方法,获取当前进程
  • (3):isAlive方法,测试线程是否处于活动状态
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    package Unit08.sec02;
    public class Demo2 implements Runnable {
    @Override
    public void run() {
    // TODO Auto-generated method stub
    for(int i=0;i<10;i++){
    // 获取当前线程的名称
    System.out.println(Thread.currentThread().getName()+":"+i);
    }
    }
    public static void main(String[] args) {
    Demo2 demo2=new Demo2();
    // 线程处于创建的时候并不是处于活动状态的
    // 当它是start了之后才是处于活动状态的
    Thread t1=new Thread(demo2);
    System.out.println("t1是否还在活动"+t1.isAlive());
    t1.start();
    System.out.println("t1是否还在活动"+t1.isAlive());
    }
    }
  • (4):sleep方法,可以让线程进行休眠一段时间(时间以ms计算)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public class Demo3 implements Runnable {
    @Override
    public void run() {
    // TODO Auto-generated method stub
    for(int i=0;i<10;i++){
    try {
    // 线程休眠,让线程可以休息..(ms)
    Thread.sleep(1000);
    Thread thread=Thread.currentThread();
    System.out.println(thread.getName()+":"+i);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    public static void main(String[] args) {
    Demo3 demo3=new Demo3();
    Thread t1=new Thread(demo3);
    t1.start();
    }
    }
  • (5):setPriority方法,更改线程的优先级
    Markdown

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import java.util.concurrent.ThreadFactory;
    public class Demo4 implements Runnable {
    @Override
    public void run() {
    for(int i=0;i<10;i++){
    Thread thread=Thread.currentThread();
    System.out.println(thread.getName()+":"+i);
    }
    }
    public static void main(String[] args) {
    Demo4 demo4=new Demo4();
    Thread t1=new Thread(demo4,"线程A");
    Thread t2=new Thread(demo4,"线程B");
    Thread t3=new Thread(demo4,"线程C");
    // 设置线程的优先级,并且一共有3种字段
    t1.setPriority(Thread.MAX_PRIORITY);
    t2.setPriority(Thread.MIN_PRIORITY);
    t3.setPriority(Thread.NORM_PRIORITY);
    t1.start();
    t2.start();
    t3.start();
    }
    }
  • (6):yield方法,暂停当前正在执行的线程对象,并执行其他线程。

  • 搞笑版本:线程礼让?!
    Markdown
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import java.util.concurrent.ThreadFactory;
    public class Demo5 implements Runnable {
    @Override
    public void run() {
    for(int i=0;i<10;i++){
    // 获取当前线程
    Thread thread=Thread.currentThread();
    System.out.println(thread.getName()+":"+i);
    if(i==5){
    System.out.println("线程礼让:");
    // 暂停当前执行的线程让另外一个线程去执行
    thread.currentThread().yield();
    }
    }
    }
    public static void main(String[] args) {
    Demo5 demo5=new Demo5();
    Thread t1=new Thread(demo5,"线程A");
    Thread t2=new Thread(demo5,"线程B");
    t1.start();
    t2.start();
    }
    }

热评文章