多线程直接继承Thread类方式设计一个线程例子,在例子中构造4个线程对象实现对同一数据类对象进行操作

多线程直接继承Thread类方式设计一个线程例子,在例子中构造4个线程对象实现对同一数据类对象进行操作(数据初始值为0),其中线程对象1对数据执行+10的操作,线程对象2对数据执行+20的操作, 对象3对数据执行乘以3的操作,线程对象4对数据执行除以4的操作,请考虑线程同步,保证数据操作的正确性。请提供程序代码以及运行结果截图

2个回答

feilisitan
feilisitan 采纳了,谢谢
大约一年之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 回复feilisitan: 采纳了可以按照你要求给你写。
大约一年之前 回复
feilisitan
feilisitan 不是的
大约一年之前 回复

private volatile static int num = 0;
public static void main(String[] args) {
final CyclicBarrier ot2 = new CyclicBarrier(2);
final CyclicBarrier ot3 = new CyclicBarrier(2);
final CyclicBarrier ot4 = new CyclicBarrier(2);
Thread add10 = new Thread(new Runnable() {
public void run() {
try {
num += 10;
System.out.println(num);
ot2.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}

        }
    });

    Thread add20 = new Thread(new Runnable() {
        public void run() {
            try {
                ot2.await();
                num += 20;
                System.out.println(num);
                ot3.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (BrokenBarrierException e) {
                e.printStackTrace();
            }
        }
    });

    Thread multi3 = new Thread(new Runnable() {
        public void run() {
            try {
                ot3.await();
                num *= 3;
                System.out.println(num);
                ot4.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (BrokenBarrierException e) {
                e.printStackTrace();
            }
        }
    });

    Thread devide4 = new Thread(new Runnable() {
        public void run() {
            try {
                ot4.await();
                num /= 4;
                System.out.println(num);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (BrokenBarrierException e) {
                e.printStackTrace();
            }
        }
    });




    devide4.start();
    multi3.start();
    add20.start();
    add10.start();
    try {
        devide4.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println(num);
}


    ![运行结果](https://img-ask.csdn.net/upload/201903/31/1554007139_995881.png)
interesting_star
interesting_star 回复feilisitan: 看一下CyclicBarrier这个类的相关信息。就可以实现你的需求了
大约一年之前 回复
interesting_star
interesting_star 回复feilisitan: 我这都运行成功了。就是没放类名跟包信息而已
大约一年之前 回复
feilisitan
feilisitan Thread.java:1: 错误: 需要class, interface或enum private volatile static int num = 0;
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Thread,对线程操作的例子程序,Delphi7.0
Delphi7.0中,,可以帮助立即线程的原理,轻松学会线程。
实现线程的两种方式——继承Thread类
package thread;/* * 线程简介 * 实现线程的两种方式 * 在Java中提供两种方式实现线程 * 继承java.lang.Thread类与实现java.lang.Runnable接口 * 1.继承Thread类 */public class ThreadTest extends Thread{    private int count=10;    public void run...
线程(继承Thread类实现)
package HowToRun; public class DemoThread extends Thread { public void run(){ for(int i=0;i System.out.println("DemoThread-------->"+i); } } public static void main(String[] args) { DemoThread demoT
线程经典例子 Thread
一个线程经典例子 Thread delegate void SetProgressBarValueDele(); void SetProgressBarValue() { if (this.progressBar1.InvokeRequired) { this.Invoke(new SetProgressBarValueDele(SetProgressBarValue)); } else { if (this.progressBar1.Value < this.progressBar1.Maximum) { this.progressBar1.Value += 1; } else { this.progressBar1.Value = 0; }
Thread 线程简单例子
//这个方法是 静态的 public static void ThreadFunc() {//计数器 int count = 0; while(true) { //休眠1秒 Thread.Sleep(3000); ...
线程的 案例 例子 thread
入门线程,和高级线程。有助于大家的学习,大家可以看看。
Thread类与线程对象
本系列课程一共20套,每一套视频课程会深入讲解Python的一类知识点。Python是当今炙手可热的编程语言,可用于多个领域,人工智能、大数据、Web开发、移动开发、运维等。而且学习Python,将会更容易找到工作。本系列课程深入介绍了Python语言的方方面面,也是李宁老师其他课程的基础,如深度学习、科学计算、Web开发(Django Web框架)、全站开发、运维等。
继承Thread 实现线程
public static void main(String[] args) { new Person1().start(); new Person2().start(); } } class Person1 extends Thread{ @Override public void run() { for (int i = 0
多线程_线程的创建_继承Thread类
package com.sxt.thread; /** * 创建线程方式一: * 1、创建:继承Thread+重写run * 2、启动: 创建子类对象 + start * @author * */ public class StartThread extends Thread{ /** * 线程入口点 */ @Override public void run() { ...
线程操作之Thread类
在.Net fremework 中,所有与线程有关的操作都封装在System.Thread命名空间中, 所以在操作线程时,要先引入次命名空间 Thread类的常用方法 Abort              线程终止 Join               暂停调用线程,知道线程终止 ResetAbort            取消当前的线程请求Abort方法 Resume   ...
线程的创建方式一-----继承Thread类
package it.a; /* * 创建线程方式一: 继承Thread类重写run()方法。启动线程用start()方法 * */ class Test extends Thread { private String name; Test(String name) { this.name = name; } ...
类中使用线程例子4
#include #include #include class A { public: void StartThread(); DWORD static WINAPI ThreadFunc(LPVOID lparam); public: int abc; }; void A::StartThread() { CreateThread(NULL,NULL,ThreadFunc,t
POSIX线程多线程例子
#include #include #include #include #define NUM_THREADS 6 void *thread_function(void *arg); int main() { int res; pthread_t a_thread[NUM_THREADS]; void *thread_result; int lots_
PYTHON——多线程:Thread类与线程对象
Thread类与线程对象   Thread类构造方法的target关键字参数不仅可以是函数,还可以是一个对象,可以称这个对象为线程对象。其实,线程调用的仍然是函数,只是这个函数用对象进行了封装。这么做的好处是可以将线程函数相关的代码都放在这个对象对应的类中,更能体现面向对象的封装性。  线程对象对应的类需要有一个可以传入线程函数和参数的构造方法,而且在类中还必须有一个名为“__call__()”...
java编程之线程,继承Thread类
线程测试类package ThreadTest; //java编程之线程 /** * 1.start()是用来启动线程,启动之后会自动调用线程中的run()方法 * * */ public class Test1 { //主线程为当前类的线程 public static void main(String[] args) { // TODO A
20.3.2 继承Thread线程类
本课程包括6章。内容包括Python数据交换格式,Python数据库编程,Python网络编程,wxPython图形用户界面编程,Python多线程编程和Python游戏开发引擎。通过本篇的学习,读者可以全面了解Python编程中一些实用库,熟悉这些库的实用。rn配套资源:示例代码和教学课件rn
线程学习--继承Thread类
public class Test2 { public static void main(String[] args) { // TODO Auto-generated method stub Test3 test = new Test3(); test.start(); for(int j = 0 ; j< 5;j++){ System.out.println("mai
线程基本知识和继承Thread类
线程基本知识 1、线程与进程           进程:执行中的程序。        线程:轻量级的进程。                 线程本身不能单独运行,必须放在一个进程中才能执行。    2、java的线程模型       1.新建状态             线程被创建之后便处于新建状态。       2.就绪状态             新建状态的线程调用s
继承Thread类的线程问题
看网上视频教程及书上源代码,说线程在实际运行中是交替运行的。我抄了书上的源代码,在eclipse中运行,并未出现交替运行结果,怎么回事?rnrnrn代码如下:class PrintLetter extends Threadrn private char letter;rn private int num;rn public PrintLetter(char ch,int num)rn letter = ch;rn this.num = num;rn rn rn public void run()rn for(int i=0;i
Java Thread 多线程 操作线程
创建、启动线程 线程的实现方式 线程的生命周期 线程的状态 控制线程 5、线程的创建和启动 A、继承Thread类或实现Runnable接口,重写或实现run方法,run方法代表线程要完成的任务 B、创建Thread子类或是Runnable的实现类,即创建的线程对象;不同的是接口实现线程, 需要将接口的实现类作为参数传递给Thread类的...
继承Thread类的线程实现方法
这是我学习的第一篇博客,如果有不当之处,望不吝赐教
线程的操作 继承 thread 和实现renable 接口
 线程的操作 继承 thread 和实现renable 接口 //线程的各个方法 t.isAlive(); //是否存活 t.resume(); //强制关闭 package xiancheng; //继承thread 实现线程 public class Student extends Thread{  public void run(){   this.getNam
线程实现方式-继承Thread类和实现Runnable接口的区别
通常创建线程有两种方式: 1、继承Thread类  2、实现Runnable接口 主要区别在于在多线程访问同一资源的情况下: 用Runnable接口创建的线程可以处理同一资源; 用Thread类创建的线程则各自独立处理,各自拥有自己的资源。
多线程——继承Thread类实现一个多线程
继承Thread类实现一个多线程 Thread类部分源码: package java.lang; //该类实现了Runnable接口 public class Thread implements Runnable { private volatile String name;//线程名字 //构造方法,用于创建一个实现Runnable接口的线程 ...
继承Thread类创建一个线程
class Demo extends Thread { // 覆盖run()方法; public void run() { for (int i = 0; i < 60; i++) System.out.println("dome run" + i); } }public class ThreadDemo { public stat
32-多线程--概述+Thread类+多线程的创建方式(继承Thread类+实现Runnable接口)+Runnable接口+线程的名称+线程的状态
一、概述 1、进程:对应的是一个应用程序在内存中的所属空间。进程是不直接执行的,它只是在分配该应用程序的内存空间 注: (1)如果一个程序在内存中开辟了空间,就代表它在运行。不运行要释放空间 (2)关于进程 a). 进程是程序(任务)的执行过程 -- 动态性 b). 进程持有资源(共享内存、共享线程)和线程 -- 载体 c). 线程是系统中最小的执行单元,线程共享进程的资源 2、线...
java中通过继承Thread类构造线程
在java语言中,可以采用两种方式产生线程: 通过继承Thread类构造线程。实现一个Runnable接口。     此处仅讨论第一种方面,通过此方法创建一个线程的步骤: 创建一个扩展(extends)Thread类用要在这个线程中执行的代码覆盖Thread类的run()方法用关键字new创建所定义的线程类的一个对象调用该对象的start()方法启动线程
实现多线程的方式1-继承Thread 类
package com.shn.juc.thread; //子线程和主线程都打印1-100的输出 public class ExtendThreadClass { public static void main(String[] args) { //创建子类的对象 SubThreadDemo subThreadDemo = new SubThreadDemo(); subThre...
类中实现线程例子1
#include #include #include typedef unsigned (WINAPI *PBEGINTHREADEX_THREADFUNC)(LPVOID lpThreadParameter); typedef unsigned *PBEGINTHREADEX_THREADID; class ThreadObject { public: ThreadObject();
Java 多线程例子4 继承Thread 实现Runnable
1,Runnable例子 class ThreadDemo { public static void main(String[] args) { TestThread t = new TestThread(); new Thread(t).start(); new Thread(t).start(); new Thread(t).start(); new Thr...
Java多线程(2)—— 线程实现之继承Thread类
1.1、使用多线程 一个进程在运行时至少会有1个线程在运行,线程会在后台执行;例如调用public static void main() 方法的线程就是如此,而且由JVM创建。 package test; public class Test{ public static void main(String[] args){ System.out.println(Thread.currentTh...
java线程以继承Thread类的方法实现多线程
创建一个类继承Tread  实现run方法 class MyThread extends Thread{    public MyThread(String name) {    super(name);    } @Override public void run() { // TODO Auto-generated method stub for (int i = 1; i &amp;...
线程3--实现多线程程序方式一_继承Thread类
实现多线程程序方式一_继承Thread类 java.long.Thread :就是一个描述线程的类,我们想实现多线程程序,就必须得使用Thread类. 线程,是程序中的执行线程,JAVA虚拟机允许应用程序并发的运行多个执行线程. 每个线程都有一个优先级,优先级高的优先于优先级低的线程. 多线程程序的第一种实现方式–继承Thread类 步骤: 1.创建一个Thread类的子类,继承Threa...
一个简单的线程例子
SimpleThreads程序有两个线程组成,第一个是主线程,它从创建了一个线程并等待它执行完成。如果MessageLoop线程执行了太长时间,主线程将会将其中断。 MessageLoop现场将会打印一系列的信息。如果中断在它打印完所有信息前发生,它将会打印一个特定的消息并退出。 java 代码 public class SimpleThreads { // Displ
一个线程和信号量的例子
线程中使用信号量好像和互斥差不多//start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191@qq.com //@brief: 一个线程和信号量的例子#include <stdio.h> #include <pthread.h>//线程的头文件 #include
一个“线程不安全”的例子
写过几个多线程的程序了,但是对多线程下的一些问题还是理解的不好。其中一个问题是“线程安全”,查了一些关于它的定义,但是始终不明白。非常想知道线程安全的必要性到底是怎么体现的,所以想找一个“线程不安全”的例子。所以写了下面的例子:using System;using System.Data;using System.Collections;using System.Threading
转一个线程的例子
-
Thread Runable线程与线程类
9.1  线程与线程类 9.1.1  线程的概念 线程的概念来源于计算机的操作系统的进程的概念。进程是一个程序关于某个数据集的一次运行。也就是说,进程是运行中的程序,是程序的一次运行活动。 线程和进程的相似之处在于,线程和运行的程序都是单个顺序控制流。有些教材将线程称为轻量级进程(light weight process)。线程被看作是轻量级进程是因为它运行在一个程序的上下文内,并利用分
多线程对同一数据进行不同操作
示例一:网上多数采用的方法,设计得很巧妙 import java.util.concurrent.atomic.AtomicInteger; public class AddSub { AtomicInteger at = new AtomicInteger(1); int j = 1; public static void main(String[] args) { AddS
线程--继承Thread
首先继承Thread类,然后重写Thread类的run()方法。Thread类的子类的对象调用start()方法,然后虚拟机就会调用该线程的run()方法。当程序执行到start()方法时,线程启动,此时有两条执行路径,一条是主方法执行main方法,另一条是线程路径执行线程run()里的代码,两条路径交替执行(交替执行指抢夺cup执行时间,所以每次执行结果都不同)class ThreadDemo ...
一个线程项目例子
最近在公司写的一个线程项目,上传上来,方便以后参考。
一个线程测试的例子
直接上代码,功能留在以后有时间再写 // CThreadTestDemo.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include void ThreadProc(void *param); int _tmain(int argc, _TCHAR* argv[]) { int i1=1; int i2=2;
继承Thread类构造多线程实例
一个简单的通过继承Thread类构造多线程实例,它的功能是模拟一个笼子内有20只鸟在里面移动,每个“鸟”是一个扩展的Thread类,它负责控制自身的移动。
一个线程不安全的例子
package com.example.demoClient.lg; /** * @author Dongguabai * @date 2018/11/10 16:53 */ public class Demo3 { private int value = 1; public static void main(String[] args) { Demo...
立即提问

相似问题

1
python restful api怎么实现多线程,求大神解答!!!
1
这样写有没有开启多个线程?为什么打印出来的都只是一个线程啊
2
linux C/C++ 多线程编程开启线程的方式
3
多线程工具类普通类调用server层空指针异常,请问该如何解决
0
多线程socket编程的问题,使用BIO模式的话,一个线程只能处理一个Socket吗?
0
请问对于热点代码,JVM如何记录多线程的指令运行位置?
0
Java语言死循环是不是一直运行,它有什么用?和多线程有什么区别
1
关于JAVA线程池的一个问题,求解答~
2
Java何种业务才会用到多线程?如果是并发如何实现?
2
C# 多线程问题,各位大佬,子线程创建一个有Timer控件的窗体,但是Timer在子线程结束后就实效,求解
2
java中HashMap是线程不安全的,头插法只有在多线程中才会出错,为什么要jdk1.8使用尾插法?
1
python用多线程读取同一个文件,要想速度快一点只能先把文件读到缓冲区然后再进行分配嘛?还有没有别的方法?
2
ThreadPoolExecutor 线程执行到一半消失??
1
Java多线程ThreadPoolExecutor类的shutdown方法使用后,线程的任务没有执行完就terminate
0
代码里面用多线程在跑数据,但是在涉及到某张表的删除操作时就报错
1
netty线程模型如何测试
2
vs2019 远程调试Linux时,多线程编程时失败。
2
关于用timeSetEvent c++多线程时的空悬指针来探讨解决办法
0
Java语言高分悬赏:使用多线程编程技术计算自然底数的值,并且和单线程比较,运行时间分别是多少
0
python tkinter如何与线程通讯?