zoukankan      html  css  js  c++  java
  • 创建多线程的方式&Thread类的常用方法

    创建多线程的第一种方式:继承java.lang.Thread类

    注意:1.一个线程只能执行一次start()

               2.不能通过Thread实现类对象的 run()去启动一个线程

               3.增加加一个线程,需要新创建一个线程的对象

    Thread类的常用方法:

                1.start():启动线程并执行相应的 run()方法

                 2.run():子线程要执行的代码放入run()方法中

                 3.currentThread():静态的,调取当前的线程

                 4.getName():获取此线程的名字

                 5.setName():设置此线程的名字

                 6.yield():调用此方法的线程释放当前的CPU执行权

                 7.join():在A线程中调用B线程的join()方法,表示:当执行到此方法,

                                A线程停止执行,直到B线程执行完毕,

                                A线程再接着join()之后的代码执行

                 8.isAlive():判断当前线程是否还存活

                 9.sleep(long m):显示的让当前线程睡眠m毫秒

                10.线程通信:wait()  notify()  notifyAll()

                 设置线程的优先级:

                                     getPriority():返回线程优先值

                                     setPriority(int  newPriority):改变线程的优先级 

    继承Thread类的匿名类的对象

    TestTh

    package com.aff.thread;
    
    public class TestTh {
        public static void main(String[] args) {
            //继承Thread类的匿名类的对象
            new Thread() {
                public void run() {
                    for (int i = 0; i < 100; i++) {
                        if (i % 2 == 0) {
                            System.out.println(Thread.currentThread().getName() + ":" + i);
                        }
                    }
                }
            }.start();
    
            new Thread() {
                public void run() {
                    for (int i = 0; i < 100; i++) {
                        if (i % 2 != 0) {
                            System.out.println(Thread.currentThread().getName() + ":" + i);
                        }
                    }
                }
            }.start();
        }
    }

    创建多线程的第二种方式:通过实现的方式(只要和线程相关都离不开Runnable)

    TestThread1

    package com.aff.thread;
    
    public class TestThread1 {
        /* 创建线程的方式二:通过实现的方式(只要和线程相关都离不开Runnable)
        *  
        *  对比一下继承的方式  vs  实现的方式
        *  实现的方式好些:①避免了java单继承的局限性
        *               ②如果多个线程要操作同一份资源(或数据),更适合使用实现的方式
        */
        public static void main(String[] args) {
            // 3.创建一个Runnable接口实现类的对象
            PrintNum p = new PrintNum();
            //   想要启动一个多线程, 必须调用start()
            // 4.将此对象作为形参传递给Thread类的构造器中,创建Thread类的对象,此对象即为一个线程
            Thread t1 = new Thread(p);
            // 5.调用start()方法:启动线程执行run()
            t1.start();// 启动线程: 执行Thread对象生成时,构造器形参的,对象的run()方法
            //   在创建一个线程
            Thread t2 = new Thread(p);
            t2.start();
        }
    }
    
            // 1.创建一个实现Runnable接口的类
    class PrintNum implements Runnable {
            // 2.实现接口实现方法
        @Override
        public void run() {
            for (int i = 0; i < 100; i++) {
                if (i % 2 == 0) {
                    System.out.println(Thread.currentThread().getName() + ":" + i);
                }
            }
        }
    }
    All that work will definitely pay off
  • 相关阅读:
    js-计算器
    正确看待HTML5的语法变化
    什么是Web前端,Web前端是做什么的?
    css复合属性的写法
    Unicode与JavaScript详解
    input 定宽,文本超出后缩小字体,尽可能多的显示文本
    手机号中间四位加*号
    React 状态和生命周期
    还是数组 练习题 而已
    数组 练习题 而已
  • 原文地址:https://www.cnblogs.com/afangfang/p/12612160.html
Copyright © 2011-2022 走看看