Java教程

Java多线程

本文主要是介绍Java多线程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

线程创建

  • 自定义线程类继承自Thread类
  • 重写run()方法,编写线程执行体
  • 创建线程对象,调用start()方法启动线程
    /**
     * 创建线程
     */
    public class test_thread extends Thread {
        @Override
        public void run() {
            // run() 方法线程体
            for (int i = 0; i < 200; i++) {
                System.out.println("我在子线程"+i);
            }
        }
        public static void main(String[] args){
            // 创建一个线程对象
            test_thread test_thread1 = new test_thread();
            // 调用start方法开启线程
            test_thread1.start();
    
            // main线程,主线程
            for (int i = 0; i < 200; i++) {
                System.out.println("我在主线程"+i);
            }
        }
    }
    
    
    • 【注】若直接调用子线程的run()方法,则不是多线程交替执行,而会调用run()方法执行
    • 【注】线程开启,不一定立即执行,由cpu调度执行。

实现Runnable

  • 定义类实现Runnable接口
  • 重写run()方法,编写线程执行体
  • 创建线程thread对象,将实现接口放入,调用start()方法启动线程
    package thread;
    
    public class MyRunnable implements Runnable {
        @Override
        public void run() {
            // run() 方法线程体
            for (int i = 0; i < 200; i++) {
                System.out.println("我在子线程"+i);
            }
        }
        public static void main(String[] args){
            // 创建runnable 接口的实现类对象
            MyRunnable myRunnable = new MyRunnable();
            // 创建线程对象,丢入实现类
            Thread thread = new Thread(myRunnable);
            // 开启线程
            thread.start();
            // main线程,主线程
            for (int i = 0; i < 200; i++) {
                System.out.println("我在主线程"+i);
            }
        }
    }
    
    

对比

  • 继承Thread类
    • 子类继承Thread类具备多线程能力
    • 启动,子类对象调用strat方法
    • 不建议用,避免OOP单继承局限性
  • 实现Runnable接口
    • 实现Runnable接口具有多线程能力
    • 启动,传入目标对象+thread对象.start()
    • 推荐用,避免单继承局限性。方便一个对象同时被多个线程使用

初识java并发问题

  • 当多个线程同时操作一个共享资源时,会发生数据紊乱问题。
这篇关于Java多线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!