zoukankan      html  css  js  c++  java
  • 多线程之——创建线程

    一、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();
            }
        }
    }
    

      

  • 相关阅读:
    获取Web.config的内容
    VS2013打开2008的项目
    Win7配置IIS7
    JavaScript通知浏览器,更改通知数目
    高分屏显示模糊修复工具
    Linux下使用 xrandr 命令设置屏幕分辨率
    虚拟机VMware怎么完全卸载干净,如何彻底卸载VMware虚拟机
    虚拟机安装VMware Tools
    网站测速、ping
    有名管道的非阻塞设置
  • 原文地址:https://www.cnblogs.com/HelloBigTable/p/10688297.html
Copyright © 2011-2022 走看看