多线程的内容

30
五月
2021

多线程

程序 一种编程语言写的指令集合体
进程一个程序的运行就是一种进程
线程是进程里的一个执行单元 一个进程中包含着多个线程

创建多线程

  1. 继承thread类 重写run方法 运行start方法
public class McxThread extends Thread {
    @Override
    public void run() {
        for (int i=0;i<40;i++){
            if(i%2==0){
                System.out.println(i);

            }
        }
    }


    public static void main(String[] args) {
        McxThread mcxThread = new McxThread();
        mcxThread.start();//作用:启动线程、调用run方法
        mcxThread.run();//直接调用run方法  线程没有被启动
       	//mcxThread.start();线程再次调用start不会在启动一个新的线程
        for (int i = 0; i < 40; i++) {
            if (i % 2 != 0) {
                System.out.println(i+"*******************");

            }
        }
    }
}
  1. 实现接口Runnable
public class McxThread1 implements Runnable {
    @Override
    public void run() {
        for (int i=0;i<40;i++) {
            if (i % 2 == 0) {
                System.out.println(i);

            }
        }
    }

    public static void main(String[] args) {
        //创建线程
        McxThread1 mthread=new McxThread1();
        //将线程放入thread类的有参构造方法里
        Thread thread=new Thread(mthread);
        //启动线程
        //运行线程的run方法
        thread.start();
        //因为在实现接口Runnable时 Thread thread=new Thread(target); 运行target.run()方法
    }
}

Thread的相关方法

  • start方法启动线程并且运行run方法
  • run方法运行内部的方法
  • setName方法设置Thread的线程名
  • getName方法获取Thread的线程名
  • currentThread的获取当前线程
  • yield 释放cpu使用权
  • join a线程阻塞 b线程运行 运行结束后 a线程运行
  • stop 已过时 强制停止该线程
  • sleep 线程睡眠
  • isAlive 是否存活

线程的调度

首先线程是有优先级的 线程的优先级取决于对线程的priority的设置值
常量设置为
MIN_PRIORITY=1
NORM_PRIORITY=5
MAX_PRIORITY=10
Thread类的设置方位为
setPriority(int p)
getPriority
特别说明: 这里不代表着高优先级就先执行 只是抢占时间片的概率高一些

TAG

网友评论

共有访客发表了评论
请登录后再发布评论,和谐社会,请文明发言,谢谢合作! 立即登录 注册会员