Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >求素数——多线程练

求素数——多线程练

作者头像
泰斗贤若如
发布于 2019-06-18 10:56:27
发布于 2019-06-18 10:56:27
80100
代码可运行
举报
文章被收录于专栏:泰斗贤若如泰斗贤若如
运行总次数:0
代码可运行

编写一个有两个线程的程序,第一个线程用来计算2~100000之间的素数的个数,

第二个线程用来计算100000~200000之间的素数的个数,最后输出结果。

代码实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.thread;

public class SuShuDemo1 extends Thread{
    private long suCount = 0;
    public boolean flag = false;

    public long getSuCount() {
        return suCount;
    }

    @Override
    public void run() {

        for (long i=2;i<=100000;i++){
            for (long j=2;j<=Math.sqrt(i);j++){
                if (i%j==0){
                    flag=true;
                    break;
                }
            }

            if (flag==false){
                this.suCount++;
            }

            flag=false;
        }
        System.out.println(Thread.currentThread().getName()+"素数一共有"+getSuCount()+"个");
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.thread;

public class SuShuDemo2 implements Runnable {
    private long suShuCount2 = 0;

    public long getSuShuCount2() {
        return suShuCount2;
    }

    @Override
    public void run() {
        for (long i =100000;i<=200000;i++){
            long j =0;
            for (j =2;j<=i;j++){
                if (i%j==0){
                    break;
                }
            }
            if (i==j){
                this.suShuCount2++;
            }
        }
        System.out.println(Thread.currentThread().getName()+"素数一共有"+getSuShuCount2()+"个");
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.thread;

public class SuShuDemo1Test {
    public static void main(String[] args) {

        SuShuDemo1 suShuDemo1 = new SuShuDemo1();
        SuShuDemo2 suShuDemo2 = new SuShuDemo2();
        Thread thread = new Thread(suShuDemo2);
        suShuDemo1.start();
        thread.start();
    }
}

  运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Thread-0素数一共有9592个
Thread-1素数一共有8392
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
多线程(一):创建线程和线程的常用方法
进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。
全栈程序员站长
2022/08/11
1.2K0
多线程(一):创建线程和线程的常用方法
燃烧吧!我的并发之魂--synchronized
零、前言 经历了两个月的沉淀,感觉整体能力有所提升,最近除了年终总结也没有什么打算了 高并发这块一致是我的心病,在这年尾,抽刀,奋力一击吧 虽然会用线程,但是总感觉有很多地方让我挺烦心,比如并发和那两个关键字 曾经三次想要突破掉多线程,但都失败了,只好暂时离开,现在的我感觉应该可以了 本文按照慕课网免费课程敲的,同时也加入了我大量的思考和绘图,希望对你有所帮助 ---- 一、多线程的简单回顾 1.入门级 下面WhatIsWrong实现Runnable,并提供一个静态实例对象和计时器i r
张风捷特烈
2019/01/03
6290
Java-多线程
程序是一段静止的代码,只有真正运行时的程序,才被称为进程。一个程序运行至少有一个进程 从操作系统底层来说,进程只是一个概念,真正执行的是线程。
WuShF
2023/07/08
2190
Java-多线程
线程,JVM锁整理
首先wait()和notify(),notifyAll()方法一定是一般对象方法,他们并不属于线程对象方法,一定是跟synchronized(监视器锁)结伴出现的。wait()方法执行时会释放获取的监视器锁,线程进入休眠等待状态。而notify()执行时,会随机唤醒一个等待状态的线程,并重新获取监视器锁,然后再继续执行。notifyAll()方法是唤醒所有的相同对象的等待线程,再去竞争获取监视器锁。
算法之名
2019/08/20
9740
【Java多线程】的学习总结
多线程其实就是进程中一个独立的控制单元或者说是执行路径,线程控制着进程的执行,【重点】一个进程中,至少有一个线程存在。
张拭心 shixinzhang
2022/11/30
6050
Java多线程——多线程方法详解
从结果可知:Mythread的构造方法是被main线程调用的,而run方法是被名称为Thread-0的线程调用的,run方法是线程自动调用的
说故事的五公子
2019/11/26
1K0
Java多线程01——多线程的创建
通过继承Thread并且重写其run()方法,run()方法中定义需要执行的任务。
头发还在
2023/10/16
2410
Java多线程01——多线程的创建
Java多线程04——线程通信
线程是操作系统中的独立个体,但这些个体如果不经过特殊处理就不能成为一个整体,线程间的通信就成为整体的必用方式之一。例如之前处理的线程同步,就是一种线程间通信的方式。
头发还在
2023/10/16
1780
Java多线程04——线程通信
让两个线程安全的交换对象 顶
JDK中有一个Exchanger交换类可以让两个线程的对象安全互换,注意这里是互换,而不是谁传给谁。这是一个传递字符数组的互换。
算法之名
2019/08/20
3720
[JDK] 多线程高并发探秘之“锁”
自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时 才能进入临界区。
架构探险之道
2019/07/25
7090
第六阶段-多线程:【第一章 多线程】
适合多个相同程序的代码去处理同一个资源的情况,把线程同程序的代码,数据有效分离,较好的体现了面向对象的设计思想
BWH_Steven
2019/08/09
5340
线程学习笔记
一、进程和线程的概述 1、要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在。 2、什么是进程? 通过任务管理器我们就看到了进程的存在。 而通过观察,我们发
泰斗贤若如
2019/06/18
3780
多线程基础
例子:单核CUP执行两件事,串行执行时间快,还是多线程执行快? 答:串行执行快。因为单核,执行的总时间一样,而多线程增加了线程切换的时间。
Java微观世界
2025/01/20
1320
多线程基础
深入理解线程通信
两个线程通过对同一对象调用等待 wait() 和通知 notify() 方法来进行通讯。
crossoverJie
2022/08/19
2630
深入理解线程通信
Java面试之创建线程的三种方法及其区别
然后,调用Thread类的构造函数创建Thread实例并调用start()方法启动线程:
leon公众号精选
2022/04/27
2800
Java面试之创建线程的三种方法及其区别
重学 Java 基础之多线程基础(一)
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
啵啵肠
2023/11/28
1920
Java多线程系列——Lock锁
Java多线系列文章是Java多线程的详解介绍,对多线程还不熟悉的同学可以先去看一下我的这篇博客Java基础系列3:多线程超详细总结,这篇博客从宏观层面介绍了多线程的整体概况,接下来的几篇文章是对多线程的深入剖析。
说故事的五公子
2019/12/10
1.4K0
Java多线程系列——Lock锁
JDK5什么是新的堵塞队列线程(四)
当队列为空时。从队列中获取元素的线程会被堵塞。直到其它的线程往空的队列里插入新的元素;
全栈程序员站长
2022/07/06
3120
JDK5什么是新的堵塞队列线程(四)
Java多线程05——JUC并发包01
JUC 即 ​​java.util.concurrent​​ 类的简称。主要为并发编程提供了许多通用工具类。
头发还在
2023/10/16
2040
Java多线程05——JUC并发包01
Java多线程基础
主线程挂了但是子线程还在继续执行,这并不会导致应用程序的结束。说明: 当main线程启动一个子线程 Thread-0, 主线程不会阻塞, 会继续执行(不会等执行完毕后再往下执行),这时 主线程和子线程是交替执行。
timerring
2023/05/07
3240
Java多线程基础
相关推荐
多线程(一):创建线程和线程的常用方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验