zoukankan      html  css  js  c++  java
  • JAVA 多线程

    Thread类实现多线程。

    一、创建多线程实现类。

    public class MyThread extends Thread { //继承Thread类
        public MyThread() {
        }
    
        public MyThread(String name) { //通过构造函数设置线程名称
            super(name);
        }
    
        @Override
        public void run() { // 重写run方法
            System.out.println(getName()); //打印当前线程名称
        }
    }

    二、启动多线程。

    public static void main(String[] args) {
            MyThread myThread = new MyThread();
            myThread.setName("子线程"); //设置线程的名称
            myThread.start(); //这才是启动多线程,开辟新的栈空间。线程之间才不会互相影响
            //myThread.run();//这只是普通的调用方法,不会新启动线程,正常压方法入栈。
            new MyThread().start();//再启动一个子线程
            System.out.println(Thread.currentThread().getName());//获取当前线程名称
        }

     Runnable接口实现多线程。

    一、创建Runnable接口的实现类。

    public class MyRunnable implements Runnable{
        @Override
        public void run() { //实现run方法
            System.out.println("子线程运行成功");
        }
    }

    二、启动新线程。

    public static void main(String[] args) {
            MyRunnable myRunnable = new MyRunnable();
            new Thread(myRunnable).start(); //启动新线程
        }

    Thread和Runnable的区别

    一、多线程的实现首先推荐使用Runnable接口实现。

      1、因为Runnable是接口,所以避免了JAVA只能单继承的的局限性。

      2、降低了程序的耦合性,所以也就变相的增强了程序的扩展性。

        1、把设置线程和开启线程进行了分离。

    多线程的两概念

    一、并发:指两个或多个事件在同一个时间段内发生。单核CPU,交替处理多个事件。

    二、并行:指两个或多个事件在同一时刻同时发生。多核CPU,同时处理多个事件。

    使用匿名内部类创建多线程

    一、作用:简化代码。

    二、代码

    public static void main(String[] args) {
            new Thread() {
                @Override
                public void run() { //重写run方法
                    System.out.println("Thread子线程成功执行");
                }
            }.start();
    
            Runnable runnable = new Runnable() { //接口实现类
                @Override
                public void run() {
                    System.out.println("Runnable子线程成功执行");
                }
            };
            new Thread(runnable).start();
    
        }

    线程调度

    一、分时调度:所有线程轮流使用CPU的使用权,平均分配每个线程的每个线程占用CPU的时间。

    二、抢占式调度:优先让优先级高的线程使用CPU,如果线程的优先级相同,就随机选择一个线程(线程随机性)。JAVA使用的是抢占式调度。

  • 相关阅读:
    Delphi使用Indy、ICS组件读取网页
    用SendNotifyMessage代替PostMessage避免消息丢失
    LuaPlus的编译和引用
    如何转换和输出超大整数(64位)
    jQuery 源码:封装 Event
    jQuery 源码:操作样式
    jQuery 源码:元素位置
    模拟ES5 Array.prototype.reduce
    as 和 is 运算符以及安全的类型强制转换
    计算机编程基础
  • 原文地址:https://www.cnblogs.com/yinmu/p/15217690.html
Copyright © 2011-2022 走看看