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线程池拒绝执行异常:如何排查和解决队列已满导致RejectedExecutionExc...
线程数、队列大小、拒绝策略)与实际负载不匹配。解决方案:调整参数:合理增加线程数或队列大小,避免资源耗尽。更换策略:根据业务容忍度选择CallerRunsPolicy、DiscardPolicy等。优化逻辑:缩短任务时间、异步处理、批量操作。关键点:需结合服务器资源、任务类型和业务需求综合决策,避免单一方案导致新问题。

如何解决 Java 线程类无法使用 @Autowired 注解注入依赖的问题?_百度...
在Java中,线程类无法直接使用@Autowired注解注入依赖,可通过构造器注入或Setter方法注入解决,以下是具体方案及步骤:一、核心原因Spring的依赖注入基于代理机制,而线程类(如Runnable实现类)通常由开发者手动实例化(如new MyThread()),导致Spring无法介入其生命周期管理,因此@Autowired失效。二、解决方案...

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

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

Java.lang.OutOfMemoryError: Unable to create new native thread无法...
三、解决策略 增加操作系统限制:根据操作系统的特性,尝试增加系统对线程数量的限制。 线程转储分析:使用调试工具进行线程转储,分析线程的使用情况,找出导致线程过多的根本原因。 代码优化:如果问题源自编程错误,如生成了大量无用线程,应优化代码,减少不必要的线程创建。 使用专业工具:可以考虑使用如...

java服务线程数每天都在增加
Java服务线程数每天都在增加可能由多种因素导致:线程池配置不当:原因:线程池的最大线程数(maxPoolSize)设置过大,或者工作队列(workQueue)长度不合理,导致线程数迅速膨胀。解决方案:根据系统负载和任务特性,合理调整线程池的配置参数。代码缺陷和错误的资源管理:原因:代码中直接使用“new Thread()...