• 线程学习oneday


    进程:执行中的程序叫做进程(Process),是一个动态的概念。

    线程:一个进程可以产生多个线程。同多个进程可以共享操作系统的某些资源一样,同一进程的多个线程也可以共享此进程的某些资源(比如:代码、数据),所以线程又被称为轻量级进程(lightweight process)。

    线程和进程最根本的区别在于:进程是资源分配的单位,线程是调度和执行的单位

    创建线程  

    一、继承Thread

    1. 继承Thread类
    2. 定义一个类继承Thread类
    3. 重写run()方法
    4. 调用star()方法,开启线程并执行,同时告诉JVM去调用run()方法
    public class StartThread extends Thread {
        public void run() {
            for (int i = 0; i < 5; i++) {
                System.out.println("一边听歌");
            }
            
        }
        public static void main(String[] args) {
            //创建子类对象
            StartThread th=new StartThread();
            //启动线程(不一定立即执行)
            th.start();
            for (int i = 0; i < 5; i++) {
                System.out.println("一边coding");
            }
        }
    
    }

    二、实现Runnable接口(优先使用)

    1. 声明实现Runnable接口覆盖接口中的run()方法
    2. 创建Thread对象将Runnable中的参数传给Thread

      3.  调用start()方法

    
    

    public class Racer implements Runnable {
    private String winner;//胜利者
    @Override
    public void run() {
    for(int steps=1;steps<=50;steps++) {
    //模拟休息
    if(Thread.currentThread().getName().equals("rabbit") && steps% 10==0) {
    try {
    Thread.sleep(100);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    System.out.println(Thread.currentThread().getName()+"--->"+steps);
    //比赛是否结束
    boolean flag=gameOver(steps);
    if(flag) {
    break;
    }
    }

    }
    private boolean gameOver(int steps) {
    if(winner!=null) {
    return true;
    } else {
    if(steps==50) {
    winner=Thread.currentThread().getName();
    System.out.println("winner==>"+winner);
    return true;
    }
    }
    return false;
    }
    public static void main(String[] args) {
    Racer racer=new Racer();
    new Thread(racer,"tortoise").start();
    new Thread(racer,"rabbit").start();
    }

    
    

    }

     

    三、实现Callable接口(我也不知道是啥)

  • 相关阅读:
    selenium 浏览器操作
    selenium 4.0新特性及新旧api对比
    Selenium123介绍
    selenium元素定位(三) css定位方法
    selenium 安装和启动
    Selenium元素定位(一)30+1+5种方式
    软件开发经验收集
    spring+hibernate架构中Dao访问数据库的几种方法
    某励志书4
    PHP的Foreach
  • 原文地址:https://www.cnblogs.com/Q-Seekers/p/11027033.html
Copyright © 2020-2023  润新知