java 多线程。 编写10个线程,第一个线程从1加到10,第二个线程第11加到20,。。。第10个线程从91加到100.最够把10个线程结果相加
java 基础教材中多线程一章 我觉得 难 的一个问题。
首先 要用多线程实现 。 因此要有类继承 Thread 或者 实现 Runable。
由于 每个线程 的 操作数 不一样 我生成了十个不同对象的线程。
public class HomeWork6_4_1 {public static void main(String[] args) throws InterruptedException {for(int i=0; i<10; i++) {Add add = new Add(i*10+1, i*10+10);add.start();}Thread.sleep(100); // 休眠 一会 以便 其他线程执行完 不然 主线程执行到输出语句时 其他线程可能还未执行完毕System.out.println(Add.sub);}}class Add extends Thread{static Object object = new Object(); // 同步代码块锁static int sub; // 类属性 用于保存线程相加结果private int min; // 传过来数据的 最小值 private int max; // 最大值public Add(int min, int max) {this.min = min; // 对象属性赋值this.max = max; // 对象属性赋值}public void run() {int res = 0;for(int i=min; i<=max; i++) {res += i; // 执行 从 min 加到 max}// 同步代码块 同一时刻只有一个 线程可以 调用该代码块内内容synchronized (object) {System.out.println(Thread.currentThread().getName() + "正在将结果附上" + res);sub += res;}}}
当然 使用 Thread.sleep(100)这样的方式 只是让main线程 休眠一会 并不能真正保证 其他线程 执行 完毕 可以 使用 .join()插队
public class HomeWork6_4_1 {public static void main(String[] args) throws InterruptedException {for(int i=0; i<10; i++) {Add add = new Add(i*10+1, i*10+10);add.start();add.join();}System.out.println(Add.sub);}}class Add extends Thread{static int sub; // 类属性 用于保存线程相加结果private int min; // 传过来数据的 最小值 private int max; // 最大值// 注 如果设置 同步方法的 话 一定 要 设置成静态方法 因为 生成了十个 不同的 对象 使用对象方法的话 锁是该对象 每个都 不一样的 也就没用了
// 静态方法的 锁是 该类 synchronized static void addres(int num) {System.out.println(Thread.currentThread().getName() + "正在将结果附上" + num);sub += num;}public Add(int min, int max) {this.min = min; // 对象属性赋值this.max = max; // 对象属性赋值}public void run() {int res = 0;for(int i=min; i<=max; i++) {res += i; // 执行 从 min 加到 max}addres(res); // 调用同步方法}}
每个线程 都插队 也就是 所有其他线程执行完 main 线程 才能够执行
该作业考量 的 也许有 线程执行顺序 。。。 即可以通过设置线程的优先级 main的优先级是 5 大概 可以将 生成的对象线程优先级 设置成 10 这样根据系统不同不一定有效
通用方法 就是 .join() 了
java 多线程。 编写10个线程,第一个线程从1加到10,第二个线程第11加到20,。。。第10个线程从91加到100.最够把10个线程结果相加相关推荐
- Java多线程编写简易飞机大战(一)
** Java多线程编写简易飞机大战(一) ** 利用多线程编写飞机大战,主要有3个关键: ①继承Thread类,重写run方法: ②线程工作代码在run方法中写: ③启动时,调用线程对象的start ...
- 14. 编写递归函数,在第一行打印输出1个1,在第二行输出2个2,。。。,在第n行输出n个n。
编写递归函数,在第一行打印输出1个1,在第二行输出2个2,...,在第n行输出n个n. #include <stdio.h> void print(int n) {if(n==1) pri ...
- (编写两个线程第一个计算2-10万的质数,第二个10万-20万的质数)
public class Main3 extends Thread{int i,j,x=0;Main3(int m,int n){this.i = m;this.j = n;}public void ...
- java多线程之线程创建和状态
一.概述 1.上下文切换 即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现 这个机制.时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切 换线 ...
- Java多线程学习记录
什么是多线程? 首先操作系统有一种能力叫多任务,看起来可以在同一时间运行多个程序,实际上操作系统会为每个进程分配CPU时间片,给人并行处理的感觉. 多线程在更低一层扩展了多任务的概念:单个程序看起来在 ...
- java多线程_Java多线程
java多线程 Multithreading in Java is a very important topic. I have written a lot about Threads in Java ...
- 多线程java_由浅入深地介绍Java多线程,让你如何快速进入Java多线程的学习
多线程是Java语言很重要的一个组成部分,今日稍微整理整理,若有缺失不足错误之处,还望各位指出 读者对象 本篇适合所有Java程序员阅读,尤其适合以下读者: Java多线程开发者 Java并发开发师 ...
- Java - 多线程
Java多线程 章节目录 Java多线程 一. 基本概念 二. 创建方式 1. 方式一:继承Thread类 2. 方式二:实现Runnable接口 3. 方式三:实现Callable接口 4. 方式四 ...
- JAVA多线程作业-多人买票
JAVA多线程作业 作业要求: 1. 假设现在有一个售票员进行售票,票价为5元,初始状态:票数不限,票售员手中有1张10元钱: 2. 每来一个顾客买票,相当于是创建一个线程,注意,此时顾客共享的资源是 ...
最新文章
- win10找不到局域网Linux,技术员解惑win10系统访问不了NAS和linux网络共享的详细办法...
- TypeScript 书写 .d.ts 文件的一些注意事项
- 算法 --- 归并排序的js实现
- win7 vs2015配置qt5.11
- 8.16 记忆增强神经网络:MANN、神经网络图灵机
- 贵州全国计算机二级报名官网入口,2019年3月贵州全国计算机二级考试报名入口已开通...
- 计算机桌面的图标怎么删除,桌面图标有蓝底怎么去掉,教您去掉电脑桌面图标蓝底的方法...
- XCELSIUS例子---柱形图部件的使用
- git 创库命令使用
- 有效沟通bic法则_南宁人际沟通培训
- SSH协议弱加密算法漏洞的利用及复现(中间人攻击)
- C#-Excel导入工资条群发邮箱
- 框架指针省略(Frame Pointer Omission)(FPO)
- 5G爆发前夜,谷歌微软争相豪赌的云游戏厉害在哪?
- 原理图中的电阻旁边有个”NC“,什么意思?
- kaggle糖尿病视网膜病变失明检测top5解决方案
- 2022嵌入式工程师面经(2023年1月更新)
- 利用快手抖音做小吃培训,年入100000+
- Hibernate课堂笔记
- 1.2 原子物理学——电子的普线图、能级图,能量吸收和共振