- 31
- 0
package com.elyong.whatsup;
/**
* Created by ely ong on 2017/12/5.
*/
public class TestThreads{
public static void main(String[] args){
ThreadOne t1=new ThreadOne();
ThreadTwo t2=new ThreadTwo();
Thread one=new Thread(t1);
Thread two=new Thread(t2);
one.start();
two.start();
}
}
class Accum{
private static Accum a=new Accum();
private int counter=0;
private Accum(){}
public static Accum getAccum(){
return a;
}
public void updateCounter(int add){
counter+=add;
}
public int getCount(){
return counter;
}
}
class ThreadOne implements Runnable{
Accum a=Accum.getAccum();
public void run(){
for(int x=0;x<98;x++){
a.updateCounter(1000);
try{
Thread.sleep(50);
}catch (InterruptedException ex){}
}
System.out.println("one "+a.getCount());
}
}
class ThreadTwo implements Runnable{
Accum a=Accum.getAccum();
public void run(){
for(int x=0;x<99;x++){
a.updateCounter(1);
try{
Thread.sleep(50);
}catch (InterruptedException ex){}
}
System.out.println("two "+a.getCount());
}
}
输出结果:
one 98098
two 98099 - 共 0 条
- 全部回答
-
忘卜掉的曾经 普通会员 1楼
以下是一个简单的Java线程问题,假设我们有一个
Thread类,它有一个join方法,这个方法会在线程执行完毕后等待所有其他的线程完成。为了输出以下结果,我们可以修改这个join方法的实现,如下所示:```java public class Main { public static void main(String[] args) { Thread thread1 = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 10000; i++) { System.out.println("Thread 1 " + i); } } });
Thread thread2 = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 10000; i++) { System.out.println("Thread 2 " + i); } } }); thread1.start(); thread2.start(); thread1.join(); thread2.join(); System.out.println("All threads completed"); }} ```
在这个例子中,我们首先创建了两个新的
Thread对象thread1和thread2,然后在main方法中将它们初始化为Runnable对象,这些Runnable对象分别执行一个名为run的方法。run方法使用了一个for循环来打印Thread对象的id和当前时间,然后在每次循环中调用join方法,这样所有其他的线程都会被阻塞,直到run方法执行完毕。join方法的返回值是一个boolean,当join方法调用完毕时,它返回true,表示所有线程都已执行完毕,否则返回false。因此,我们在main方法中调用了thread1.join()和thread2.join(),然后打印出结果,即所有线程都已经完成。如果上述代码中的
join方法没有实现相应的逻辑,或者join方法调用时run方法没有正确返回false,那么在主方法中输出的将会是未完待续的输出,而不是我们期望的结果。例如,如果join方法在循环中调用了join方法,而run方法并没有正确返回false,那么输出结果将会是Thread 1 9999 Thread 2 9999,而不是我们期望的结果,即Thread 1和Thread 2都已经完成。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
