多线程之——创建线程

一、Thread类

  java.lang包提供了Thread类来实现多线程,在Java中,线程有三部分组成:

  1)虚拟CPU,封装在Thread类中,它控制着整个线程的运行;

  2)执行代码,传递给Thread,由Thread类控制顺序执行;

  3)处理数据,传递给Thread,是代码在执行过程中需要处理的数据。

  Thread的主要构造方法和方法

Thread()创建一个没有名称的线程对象
Thread(String name)创建一个名称为name的线程对象
Thread(Runnable target)创建一个以target为参数的线程对象
Thread(Runnable target,String name)创建一个以target为参数、name为名称的线程对象
Thread(ThreadGroup group,String name)创建一个归属于group线程组、名称为name的线程对象
Thread(ThreadGroup group,Runnable targer)创建一个归属于group线程组、target为参数的线程对象
public static int activeCount()返回当前线程所属线程组中存活的线程数
public static Thread currentThread()返回当前线程对象
public long getId()返回该线程的ID,每个线程都有唯一的ID
public final String getName()返回该线程的名称
public final int getPriority()返回该线程的优先级
public Thread.State getState()返回该线程的状态,用于检测运行状态
public final ThreadGroup getThreadGroup()返回该线程所在线程组
public void interrupt()中断线程
public static boolean interrupted()判断该线程是否中断,若中断则清楚中断状态
public final boolean isAlive()判断线程是否处于活动状态,若线程已经启动但且尚未终止称为活动状态
public final boolean isDaemon()判断该线程是否为守护线程
public boolean isInterrupted()判断该线程是否中断,且线程状态不受次方法的影响
public final void join等待该线程终止
public void run();线程的主题,Thread的子类应该重写该方法,实现Runnable接口的对象应该实现该方法
public final viod setDaemon(boolean on)设置线程是否为守护线程
public finla void setName(String name)设置线程名称
public final void setPriority(int newPriority)设置线程优先级
public static void sleep(long milis)使该线程休眠milis毫秒
public void start();启动该线程
public static void yield()暂停当前线程,让处于活动状态的线程重新抢占控制权

  通过继承Thread来创建线程的方法:自定义的封装类继承Thread并重写run方法即可,如果还需要还可以重写其他方法,代码如下

/**
 * @author: PrincessHug
 * @date: 2019/4/11, 9:04
 * @Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class ThreadDemo extends Thread {
    String name;

    public ThreadDemo(String name) {
        super(name);
    }

    @Override
    public void run() {
        for (int i=1;i<21;i++){
            System.out.println(this.getName() + ":" + i);
        }
        System.out.println(this.getName() + "的优先级为:" + this.getPriority());
    }
}
public class ThreadDriver {
    public static void main(String[] args) {
        ThreadDemo td = new ThreadDemo("11#");
        td.setPriority(MAX_PRIORITY);
        td.start();
        for (int i=1;i<11;i++){
            new ThreadDemo(i + "#").start();
        }
    }
}

 

二、Runnable接口

  Runnable中只有一个抽象方法run,实现Runnable的对象要实现run方法,然后通过Thread(Runnable targer)的构造方法来创建一个线程

  代码如下:

/**
 * @author: PrincessHug
 * @date: 2019/4/11, 9:13
 * @Blog: https://www.cnblogs.com/HelloBigTable/
 */
public class RunnableDemo implements Runnable {
    @Override
    public void run() {
        for (int i=1;i<11;i++){
            System.out.println(Thread.currentThread().getName() + ":" + i);
        }
        System.out.println(Thread.currentThread().getName() + "的优先级为:" + Thread.currentThread().getPriority());
    }
}
public class RunnableDriver {
    public static void main(String[] args) {
        RunnableDemo rd = new RunnableDemo();
        Thread td = new Thread(rd, "11#");
        td.start();
        for (int i=1;i<11;i++){
            new Thread(rd,i + "#").start();
        }
    }
}

  

转载于:https://www.cnblogs.com/HelloBigTable/p/10688297.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值