栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA 多线程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA 多线程

1、多线程概念

与操作系统中多线程差不多,但是JAVA中的多线程是对虚拟机,
而操作系统是面向实实在在的硬件(更复杂)。利用资源处理任务的思路相同。

2、此处线程

每个线程拥有独立的运行栈和程序计数器(PC),线程切换的开销小一个进程中的多个线程共享相同的内存单元/内存地址空间。它们从同一堆中分配对象,可以访问相同的变量和对象。使得线程的通信简便、高效。但多个线程操作系统共享的资源有安全隐患。(深入理解需要长期不断学习,迭代更新) 3、线程的简单创建

1、方式一

1.创建一个继承于Thread的子类
2.重写Thread的run()>>>此线程需要做的事写在此处
3.创建Thread的对象
4.通过此对象调用start()( 作用:启动线程,去调用run())
注意:

不能用 对象.run() 启动线程一个对象只能用一次start()

创建一个线程:

线程一

package com.learn.thread;

//1.创建一个继承于Thread的子类
public class LearnThread_01 extends Thread {

    //2.重写Thread的run()
    @Override
    public void run() {
        //找出1-100的偶数
        for (int i = 1; i <= 100; i++) {
            if (i%2 == 0) {
                System.out.println("线程一:"+i);
            }
        }
    }
}

线程二

package com.learn.thread;

public class LearnThread_02 extends Thread{
    @Override
    //找出1-100 奇数
    public void run() {
        for (int i = 1; i <= 100; i++) {
            if (i%2 != 0) {
                System.out.println("线程二:"+i);
            }
        }
    }
}

测试

package com.learn.thread;

public class AllThread {
    public static void main(String[] args) {
        LearnThread_01 learnThread1 = new LearnThread_01();
        learnThread1.start();
        //主线程
        for (int i = 1; i <= 100; i++) {
            if (i%2 != 0) {
                System.out.println("线程二:"+i);
            }
        }
    }
}

结果:这里已经乱了哦(体现了线程的思想,此处线程不安全)
补充1:Thread中常用方法

satar()========================启动线程、调用run()run()=========================子类重写建立需要的操作currentThread()=================静态方法,返回执行当前代码的线程getName()=====================获取当前线程的名字setName()=====================设置当前线程的名字yield()========================释放当前Cpu的使用sleep()=======================停等(1000)单位为毫秒join()========================在线程A调用线程B时,A阻塞直到B完成结束阻塞


补充2:线程的优先级

0000&*&

NAX_PRIORITY :10NAX_PRIORITY :5 (默认优先级)NAX_PRIORITY :1
&*&
setPriority();
getPriority()

2、方式二

    创建一个实现Runnable 接口的类实现抽象方法run()创建实现类的对象将此对象作为参数传递Thread类的构造器中,创建Thread的对象通过Thread的对象调用start()
package com.learn.thread;

public class RunLearThread implements Runnable{
    @Override
    public void run() {
        //找出1-100的偶数
        for (int i = 1; i <= 100; i++) {
            if (i%2 == 0) {
                System.out.println("Runnable 实现");
            }
        }
    }
}

测试

@Test
    public void test_02(){
        RunLearThread run = new RunLearThread();
        Thread thread = new Thread(run);
        thread.start();
    }

结果:

4、线程安全

1、线程的生命周期(java)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/705266.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号