导航:首页 > 编程语言 > java多线程输出

java多线程输出

发布时间:2022-08-12 16:47:24

java多线程的问题为何输出结果只有一个

1、主要是tt.join的问题。
2、当子线程开启后,主线程和子线程是并发或并行执行的,会多线程输出。
但是tt.join是指将tt线程与主线程(即tt.join这段代码所运行时候的线程)合并,即等tt.join运行完后执行刚刚的主线程。
而你的tt线程中的run()方法为:while(true)所以tt.join之后,tt一直在运行,
故只能看一个线程在运行。

希望能解决你的问题。

❷ Java多线程调试如何完成信息输出处理

默认情况下,在调试多线程程序时,当遇到断点时(breakpoint),当前线程暂停,而其它线程继续运行,有些情况下,这是我们不想要看到的。比如下面的例子:

再调试多线程程序:

可以看到所有线程都Suspend了。

❸ java多线程编程代码如下,输出结果如下:

首先,你同步的是具体的某个Test实例, 对于那个实例来说,实际上只有一个线程访问了那个代码块,但是sum和other却是多个线程同时去进行访问,实际上这是不安全的,如果你想实现每次都输出10000的效果,那么正确的应该是在Test.class上加锁,而不是获取Test实例的锁,修改后的代码如下:

publicclassTestextendsThread{

publicstaticintsum=10000;

publicstaticintother=0;

publicvoidgetMoney(){
synchronized(Test.class){

System.out.println(Thread.currentThread().getName()+"开始执行");
sum=sum-100;

System.out.println("sum-100");

other=other+100;

System.out.println("other+100");

System.out.println(sum+other);
System.out.println(Thread.currentThread().getName()+"执行完成");
}

}

publicvoidrun(){

getMoney();

}

publicstaticvoidmain(String[]agrs){

Threadt[]=newThread[10];

for(inti=0;i<=9;i++){

t[i]=newTest();

t[i].start();

}

}

}

// 上面代码能得到你的结果


❹ 用java多线程编程,输出"hello world"

4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。
参考一下以下程序吧::
package com.lzy.interviewing;

public class ThreadTest1 {

private int j ;

public synchronized void inc() {
j++;
System.out.println(Thread.currentThread().getName() + "This +j is :"
+ j);
}

public synchronized void dec() {
j--;
System.out.println(Thread.currentThread().getName() + "This -j is :"
+ j);
}

class Inc implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
inc();
}
}
}

class Dec implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
dec();
}
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
ThreadTest1 tTest = new ThreadTest1();
Inc inc = tTest.new Inc();
Dec dec = tTest.new Dec();
for (int i = 0; i < 2; i++) {
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
}
}
}

❺ java多线程输出打印问题2

多线程是程序设计中最困难的一个环节。
1、楼主对多线程的认识通过程序来看,还是刚开始学。
2、没有同步控制的多线程,就不能算是多线程。一般的多线程代码都要有同步控制,即不让多线程 跑乱。
3、因为你这个没有任何同步控制,跑成各种情况都有可能。我就不分析了。
建议找下马士兵的多线程视频部分,他在这块讲得比较详细和深入。
试下看吧。

❻ 使用java多线程打印0到1000输出且不重复,如何实现

这其实是一个多线程,资源共享的问题。实现Runnable接口就可以了。

截图是一个多线程资源共享的例子,每个线程可以互相知道ticket的值,这样就不会重复。


把ticket初始为0,每个线程打印出ticket的值,打完+1。下一个线程再打印ticket就是+1之后的值。然后再判断ticket的值,>=1000的时候停止线程。


详细的你可以看看:

java多线程总结 - Rollen Holt - 博客园

http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html


完全可以解决你的需求

❼ java中怎样多线程输出012012012其中thread-0输出0,thread-1输出1,thread-2输出2

class
Ctest
extends
Thread{
private
String
str;//用String是想着如果用其他字符串也可以,如果只是int容易出错
public
Ctest(String
str){
this.str=str;
}
public
void
run(){
for(int
i=0;
i<50;i++){
System.out.print(str);
}
}
}
public
class
Test
{
public
static
void
main(String
args[]){
Ctest
ct1
=
new
Ctest("0");
Ctest
ct2
=
new
Ctest("1");
Ctest
ct3
=
new
Ctest("2");
ct1.start();
ct2.start();
ct3.start();
}
}//在run方法中加sleep
就好

❽ JAVA多线程,怎么总是输出两个同样的

这应该是java中多线程的安全问题吧,CPU处理切换时间片的速率是非常快的,
当线程1判断完之后还没来得及输出,时间片就切换到线程2上了,
然后又进行了一次判断结果还是大于0,但是还没等到线程2输出就又回到了线程1,接着执行
输出语句,比如输出10,输出完之后又一次回到线程2上进行第二次输出,输出的结果和线程1
一样(10)。我觉得应该是临时阻塞问题。 希望能够采纳.

❾ java 多线程 ,输出

你t0线程执行到else,打印一次前门入场和后门入场,虽然你加了锁,但之后t1线程也还是会执行到else,所以又打印一次,没有问题吧。就像你的if(i>0&&i<=40)一样,两个线程都会执行到。
所以你在else里面也要加一个判断,让其中一个线程来输出就行了,或者你可以t0线程输出前门,t1线程输出后门。

阅读全文

与java多线程输出相关的资料

热点内容
考研群体怎么解压 浏览:153
linux修改命令提示符 浏览:222
圆圈里面k图标是什么app 浏览:57
pdf加空白页 浏览:943
linux服务器如何看网卡状态 浏览:314
解压新奇特视频 浏览:702
图书信息管理系统java 浏览:549
各种直线命令详解 浏览:859
程序员泪奔 浏览:143
素材怎么上传到服务器 浏览:513
android百度离线地图开发 浏览:187
web可视化编程软件 浏览:288
java笔试编程题 浏览:743
win11什么时候可以装安卓 浏览:560
java不写this 浏览:1000
云点播电影网php源码 浏览:97
pythonclass使用方法 浏览:226
移动加密软件去哪下载 浏览:294
php弹出alert 浏览:209
吉林文档课件加密费用 浏览:136