java线程问题,请高手帮忙

作者&投稿:项博 (联系方式在网页底部的电邮联系)
java 线程问题 请高手帮忙~

public void start() {
Thread t = new Thread(this);
t.start();
}


你把start方法改成这样就对了,试试看,不对不给分就是了。

import java.util.Scanner;

class MyThread extends Thread{
Main mainThread; //主线程
public String message; //输入的消息

public MyThread(Main mainThread){
this.mainThread = mainThread;
}

public void run() {
Scanner scanner = new Scanner(System.in);
//如果输入的是EXIT,结束子线程
while(!(message = scanner.next()).equals("EXIT")){
mainThread.message = message; //将输入传递给主线程
}
//将EXIT发送给主线程,通知主线程结束
mainThread.message = message;
}
}
public class Main implements Runnable{
public String message;

public void run() {
MyThread newThread = new MyThread(this); //创建子线程
newThread.start(); //启动子线程
while(true){ //循环等待子线程发来的消息
if(message != null){ //子线程发来消息了
if(message.equals("EXIT")) //如果是EXIT,结束主线程
break;
System.out.println("Main Thread: " + message);
message = null;
}
}
}

public static void main(String[] args){
Main m = new Main();
m.run();
}
}

好就没写这东西了,写得有点乱,将就看一下吧~

如下代码希望给你来帮助
package help;

class Thing
{
private static int thingCount = 100;//总计
String name;

public Thing(String name)
{
this.name = name;
}

public synchronized static void deposit(float count)
{
thingCount += count;

try
{
Thread.sleep(10);// 模拟其它处理所需要的时间,比如刷新数据库等
}
catch (InterruptedException e)
{

}
System.out.println("存入了:"+count+" 总计:"+thingCount);
}

public synchronized static void withdraw(float count)
{
thingCount -= count;

try
{
Thread.sleep(10);// 模拟其它处理所需要的时间,比如刷新数据库等
}
catch (InterruptedException e)
{

}
System.out.println("取出了:"+count+" 总计:"+thingCount);
}

public static float getBalance()
{

return thingCount;

}
}

class GetThing extends Thread
{
public void run()
{
Thing.deposit(100.0f);
Thing.withdraw(50.0f);
}

}

public class ThingTest
{
public static void main(String[] args)
{
GetThing GetThingA = new GetThing();
GetThing GetThingB = new GetThing();
GetThingA.start();
GetThingB.start();
}

}

很简单的一个问题,不过现在不想写代码

相关视频

java线程安全问题,笔试题帮忙给个思路。
1、两个线程,一个线程执行开门操作,一个线程执行关门操作,并都进行同步处理(synchronized)2、假如在开门期间,按下按钮,刚开门线程wait, 并notify关门线程开始run, 同理在关门期间,如果 按下按钮,则关门线程wait, 并notify开门线程执行 3、有一个注意的地方,每当在开门或关门期间按下按钮的时候...

JAVA中通过实现Runnable接口来创建多线程的疑问
值得注意的是,在多线程编程中,共享资源的访问和操作需谨慎处理,以避免数据竞争和线程安全问题。通过为每个线程分配独立的资源,可以有效避免这些问题,确保程序的稳定性和正确性。此外,合理使用sleep和yield等方法可以有效地控制线程的执行顺序和时间,以达到预期的并发效果。在多线程设计时,还需考虑线程...

如何解决java 多线程问题
你可以调用 Thread 类的方法 getPriority()和 setPriority()来存取Java线程同步的优先级,线程的优先级界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之间,缺省是5(NORM_PRIORITY)。 Java线程同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言...

java 多线程 cpu利用率100%问题,我做了一个程序,10个线程,不到一分钟,c...
通常情况下,一个CPU核心能承载两个线程,因此在部署线程时应考虑CPU的核心数量,避免随意增加线程数量导致资源浪费。如果你的程序中运行了10个线程且它们进行耗时操作,那么至少需要4个CPU核心才能满足需求。可以适当减少线程的数量或者优化线程中的耗时操作,以降低CPU的负载。如果你的程序涉及解码或压缩任务...

浅谈Java多线程的同步问题
从第二段代码可知 同步的关键是多个线程对象竞争同一个共享资源即可 上面的代码中是通过外部创建共享资源 然后传递到线程中来实现 我们也可以利用类成员变量被所有类的实例所共享这一特性 因此可以将lock用静态成员对象来实现 代码如下所示 代码 package vista;class MyThread implements java lang Runnab...

java多线程并发的问题
JAVA程序线程的运行:在我们使用java命令来运行程序时,这时候已经开始了两个线程,一个是main()方法的线程,一个是垃圾回收的线程。当楼主调用start方法开启另外两个线程时。这时候由于CPU来决定运行哪个线程。所以虽然noet1是先开启的,但在执行noet1时,CPU可能又去跑去执行main线程了,然后就会开启...