java如何开启两个线程后同时调用一个类的方法

不分先后顺序,是同时调用,怎么写。

0

1个回答

调用一个类的方法,不是可以直接调用吗?只是要注意这个方法是否修改了一个两个线程都要用到的变量。

1
tangdelong
唐德龙 问题的关键在同时调用
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一个类中的两个方法都加了同步锁,多个线程能同时访问这个类的两个方法吗?
看到这个问题第一反应是不懂,然后查询了网上的一些说法,感觉略有不一。细看之下发现大家对这个问题的分析角度不太一样,就会出现不同的结果,在这里记一下我收集来的不同的角度和自己的例子,感觉这个题目还是蛮有意思的。 首先,同步锁有两种,JVM的synchronized和JDK的Lock; 然后,多个线程访问这个类的两个方法也有不同的形式,例如访问这个类的两个方法是通过同一个类的实例对象来访问还是通过不同...
Java中一个类里面有两个用synchronized修饰的非静态方法,不同的线程中的实例访问这两个方法时会发生什么?
首先这个问题涉及到的是Java的对象锁。 java的对象锁和类锁:java的对象锁和类锁在锁的概念上基本上和内置锁是一致的,但是,两个锁实际是有很大的区别的,对象锁是用于对象实例方法,或者一个对象实例上的,类锁是用于类的静态方法或者一个类的class对象上的。我们知道,类的对象实例可以有很多个,但是每个类只有一个class对象,所以不同对象实例的对象锁是互不干扰的,但是每个类只有一个类锁。但是有
线程开启的三种方式(一个类两个接口)
第1种方式:继承Thread类(重写run方法) 实现部分: public class MyThread extends Thread{ //定义指定线程名称的构造方法 public MyThread(String name) { //调用父类的String参数的构造方法,指定线程的名称 super(name); } publi...
Java 反射 函数,多线程调用一个类中不同的方法
[code="java"] public void run() { try { Class reflectClass = Class.forName("com.zte.ums.zxnm01.common.alarmReport.AlarmDataExport"); Method m = refl...
多线程并发调用多个同一个实例多个带锁的方法,导致死锁~
由于很多时候没有注意到,导致一个service的实现里面的2个方法都加了同一个锁,导致当一个方法繁忙的时候另一个锁的方法死锁,执行不了~~ 解决方法,最好就是把执行次数多的方法另外加锁,不要和其他带锁的方法用同一个锁即可: byte[] lock01 = new byte[0]; public Result synResultByCache(String fid) { synch...
java多个线程同时启动的两种方式
【背景】今天遇到一个并发问题,为了在开发环境复现这个bug,需要让多个线程同时执行到某条语句。 【解决方案】 java1.5的concurrent包下的CyclicBarrier 和 CountDownLatch都能解决这个问题。不得不佩服Doug Lea! 【方法1】使用CyclicBarrier public class TestCyclicBarrier { class Worke...
在java中两个线程同时运行是怎么变化的
在线程运行中,两个线程同时运行的情况是很平常的,下面我用一个案例来说明一下两个线程同时运行时,线程状态的变化情况: 代码如下: /*  * 功能:两个线程同时运行是如何变化的  * 作者:zyj0813  * 案例:编写一个程序,该程序可以接受一个整数n,创建两个线程,  * 一个线程计算从1+....+n并输出结果,  * 另一个线程每隔一秒在控制台输出“我是一个线程,正在输出第i
java 多线程调用单例类的同一个方法
开发过程中,遇到此类场景,基础不牢地动山摇,果断网上找文章学习,摘录文章,记录一下: 1,java多线程调用 单例类中一个的方法是不会排队的,因为jvm 在每个线程下,都有一份 对调用方法的引用。 2,多个线程调用的同一个对象的同一个方法: 如果方法里无成员变量,不受任何影响; 如果方法里有成员变量,只有读操作,不受影响,存在赋值操作,有影响 3,多线程调用同一个方法,局
多线程调用单例模式的类的同一个方法,是不是需要排队调用?
最近在研究多线程,突然想到一个问题,“多线程调用单例模式的类的同一个方法,是不是需要排队调用?”,比如有10个线程同时调用一个单例模式类的同一个方法,他们是第一个调完再轮到第二个调,还是10个线程同时可以调用这个方法?想出这种问题肯定是对java的基础知识掌握的不好,在网上找了很多帖子,但看下来都很懵懂,也发现有很多人和我有一样的问题,所以我自己写了代码,模拟这种情况,代码如下。1.单例模式的类p...
java同时启动多个线程(二)
当我们需要同时启动N个线程时, 可以使用java.util.concurrent.CountDownLatch 类解决。 demo: import java.util.concurrent.CountDownLatch; public class TestCountDownLatch { public static void main(String[] args) { Count...
多线程一、sychronized
1、sychronized修饰方法  synchronized 修饰方法时锁定的是调用该方法的对象。它并不能使调用该方法的多个对象在执行顺序上互斥。 在JAVA多线程编程中,将需要并发执行的代码放在Thread类的run方法里面,然后创建多个Thread类的对象,调用start()方法,线程启动执行。 当某段代码需要互斥时,可以用 synchronized 关键字修饰,这里讨论 synchr...
java同时启动多个线程
package test; /**  * 启动多个线程,这里以100为例  * @author XYQ  *  */ public class TestThread {  public static void main(String[] args){   Thread[] th = new Thread[100];   for(int i=0;i    th[i] = new
Java多线程调用多个服务
Java多线程调用多个服务          有时候我们在同一个程序里面想实现一系列的功能,为了让这些功能无缝连接起来,我们采用多线程来调用这些服务。代码思路如下,主要通过构造方法来实现: /** * 多线程调用多个服务从而完成一个完整的功能 * */ package com.zy.socket; import org.slf4j.Logger; import org
多线程下操作同一个类全局变量
当一个类的全局变量在多线程情况下是如何改变 1.当两个线程调用不同的tickt类对象时,通过结果看程序互不影响 2,当调用同一个类对象时 其中一个线程应该是输出99的,但是还是读取到了另外一个线程改变的数据,但是运行多次都会有一个98,说明多个线程调用同一个类对象,会对全局变量有影响
java多线程调用 单例类中一个的方法
这几天面试了几个人,发现他们对线程 访问 方法的概念还是很模糊的。其实我自己也多线程用的也不多,基本都是生产者消费者模型。 但是基本概念大家还是要知道的。
一个实例中,多个synchronized方法的调用
public class ThreadA extends Thread { private MyObject object; public ThreadA(MyObject object){ this.object = object; } public void run(){ super.run(); object
Java保证两个方法互斥的方式,多线程同步
1、当需要保证多个方法的互斥,需要保证有一个共同的标准作为基准,这个基准就是一个锁。当2个以上的方法需要保证互斥,需要他们获取相同的锁,当一个方法拥有锁之后,其他的方法不能够获得锁,达到互斥的作用。 2、static class Bussiness{ public synchronized void subB(){ for (int j = 0; j < 1; j++) {
java开启多个线程,执行完成后再执行主线程
博主昨天去一家公司面试,被面试官问到一个问题,如果开启10个线程,但是需要这10个线程都执行完成后,再交由主线程统一输入,如何实现?当时我没有回答,我对多线程并不是那么的熟悉,面试结束后,我通过查阅资料找到了解决方案,下面我贴出代码: int count = 10; List<Thread> workers = new ArrayList<>(); for(in
Java启动多线程,同时启动几个没有关系的任务
最近在和线程打交道,要同时启动多个线程,并且每个线程要做不同的任务,最开始,我用的是Thread,写了几个main函数来start,不过我现在发现这个方法我觉得很水,所以翻了下java的API,看到了ScheduledExecutorService这个类里面有个线程池的方法,很给力的样子,于是我就试了试。 这个类里面主要就是两个方法: 1.scheduleAtFixedRate(Runnabl...
多线程 -同时让10个线程执行一项工作。
import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 要求实现10个线程同时执行,并通知比赛结束 * 使用到的类有: * 1:CountDownLatch,如其...
线程同步——两个线程轮流执行python实现
import threading import time lockA=threading.Lock() lockB=threading.Lock() def printA(n): if n&amp;lt;0: return lockA.acquire() print(&quot;+++&quot;) lockB.release() time.sleep(0.1) printA(n-1) def...
synchronized 使用问题(一) 多个synchronized方法执行
  同一个类中有两个方法都使用synchronized修饰时,会出现什么问题呢? package com.java.thread; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import ...
【CountDownLatch】实现多个线程同时启动
要点: 1、 CountDownLatch的计数是1. 2、await发生在多个子线程,主线程负责countDown,相当于管理多个线程的同步时机。 package multithread; import java.util.HashMap; import java.util.Iterator; import java.util.concurrent.CountDown
java-多线程同时操作同一个对象之解决方法:读写锁ReadWriteLock的使用
说明一下,这边文章写得比较简单,只涉及到ReadWriteLock的使用,具体源码实现原理并不涉及。 1、使用场景:            首先我这边是实际开发中使用到了,开发的环境情况为:有一个数据中心(暂且当做一个Map集合),有两个子线程A、B,其中A线程每5秒钟从其他地方获取到新来的数据然后和数据中心里面的数据进行一个融合,然后B线程进行隔5分钟从数据中心取出Map集合并解析其中的数据...
现在有三个线程,同时start,用什么方法可以保证线程执行的顺序
这个方法有很多今天介绍一下CountDownLatch,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行 直接上代码 public static void main(String ...v){ CountDownLatch c1 = new CountDownLatch(1); CountDownLatch c2 =...
让多个线程等待就绪之后一起执行
田径运动员在赛道上准备就绪,只等哨声一响就起跑,如果用多线程模拟这种情形呢?我们可以定义10个线程,然后我们用CyclicBarrier来让这10个启动的线程进入等待就绪的状态,一旦这10个线程准备就绪,就可以让这10个线程跑起来。 import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.
一个Java程序的运行有多个其他线程同时运行
一个Java程序的运行有多个其他线程同时运行 今天在学习《Java并发编程的艺术》这本书的时候运行了书中的一个例子。该例子是讲解Java多线程,代码的功能是打印出一个Java程序运行的时候不仅仅是main()方法的运行,而是main线程和多个其他线程的同时运行。原文代码如下: public class MultiThread { public static void main(St...
关于Java多线程调用同一静态工具类方法时
Java是线程安全的,即对任何方法(包括静态方法)都可以不考虑线程冲突,但有一个前提,就是不能对全局变量(共享资源)进行写操作。 如果有,则需要使用同步机制:synchronized关键字。
java中使用线程池并发执行方法
我们在开发的过程中,会经常遇到并发执行某个方法。在网上搜索答案的时候,都似乎Thread创建线程,或者就是先给你来一套JMM,线程之间内存,消息通信机制。 这种做法很好,巩固知识,如果现在就像要一个案例多线程执行方法,大批量的原理性介绍很费时费力,甚至会导致怀疑自己的水平。 现在有个业务需求是这样的:我要取story和joke两种类型里的数据。如果是串行操作就是 查询story,然后再查询joke...
java中synchronized修饰一个类中的两个方法的理解
synchronized是Java中的关键字,是一种同步锁。 修饰方法时锁定的是调用该方法的对象,即如果一个对象中有两个方法同时被synchronized,则同一个对象,调用这两个方法时,只能同时执行一个。但它并不能使调用该方法的多个对象在执行顺序上互斥。 如以下代码,只能同时执行set方法或out方法 class Resoure{     private String name;    ...
java 同一个类中 多个synchronized 方法会造成死锁
今天写java的时候,在一个类中写入了2个synchronized 方法。而方法1调用方法2,执行的时候老是卡住,无法往下走。 经过查阅资料,发现 synchronized方法执行的时候,synchronized方法影响的范围并不是单单方法本身,而是这个类中所有带有synchronized 的方法,synchronized线程都会等待其执行完成。这样子a调用了b,而b又要等待a执行完成才
两个线程同时运行案例
/*** 两个案例同时运行案例* 1:这个两个线程并不是有规律的运行而是有没有规律的交替运行*/package com.test3;public class Demo10_3 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Pig ...
调用一个方法,直接实现多线程执行任务
import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.LinkedBlockingQueue; import java.util.function....
Java 多线程同时执行
Java 多线程同时执行
关于Spring容器中定时器到时执行会出现两个线程同时执行的问题
quartz定时器同时执行两次,多线程同时执行
同时创建多个线程,它们都访问一个对象中的同步方法,怎么确保第一个线程最先拿到对象锁,否则,怎么保证多个线程之间的有序通信
好像在上述情况下,无法保证第一个线程最想拿到对象锁。。。 package bao; class TickTock {     String state;     synchronized void tick(boolean running) {         if(!running) {             state = "ticked";             n
Java线程池并发执行多个任务
Java在语言层面提供了多线程的支持,线程池能够避免频繁的线程创建和销毁的开销,因此很多时候在项目当中我们是使用的线程池去完成多线程的任务。 Java提供了Executors 框架提供了一些基础的组件能够轻松的完成多线程异步的操作,Executors提供了一系列的静态工厂方法能够获取不同的ExecutorService实现,ExecutorService扩展了Executors接口,Executo
Java多线程同步互斥执行某个方法或某段代码
1. 使用synchronized关键字 (1) 同步方法 修饰对象实例方法 e.g. [code=&quot;java&quot;] class A{ private final byte[] INSTANCE_LOCK=new byte[0]; synchronized void instanceMethod(){ } } A a1 = new A(); A a2 = ne...
辟谣:“一个对象的方法” 只能同时被一个“线程中的代码”调用
谎言:“一个对象的方法” 只能同时被一个“线程中的代码”调用最近在网上搜 《c# 常用面试题》时,看见有 ”一个对象的方法只能同时被一个线程中的代码调用“的说法,当时被震惊了。感觉这是一个谬论,但出于严谨还是动手试了试。这是截取以前的代码,有点小啰嗦。//1、创建 winform调试,textBoxMess 为一个label。private void button2_Click(object se...
两个带有线程池的方法分别执行两组线程任务,第二个方法需要等待第一组任务执行完毕
如下两种解决方案其中一个会影响效率,另一个可能会有未知风险,如果谁有更好的解决方案,谢谢分享。 package thread; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionExce