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、某一个函数或者变量没有在使用之前声明。2、某个地方少了个括号。(并不一定是编译器指出错误的地...
JAVA中通过实现Runnable接口来创建多线程的疑问
不明白你的具体意图。如果i变量不共享,建议为线程A和线程B分别创建SecondThread的实例,这样每个线程就能独立执行,互不影响。通过这种方式,线程A和线程B可以各自完成各自的循环任务,不会受到对方执行情况的影响。值得注意的是,在多线程编程中,共享资源的访问和操作需谨慎处理,以避免数据竞争和线程安全...
Java线程问题
线程只能调用一次start方法,这将使线程进入待运行状态,等待分配CPU时间片。在线程中的run方法执行完毕后,线程进入死亡状态,该线程生命结束。一个线程对象只可以调用一次start方法。试图在线程死亡后再次调用start方法将抛出IllegalThreadStateException异常。线程...
JAVA线程的题目 求大神解答
1、线程的实现方式有两种一种是继承Thread一种是实现Runable。2、优先级设置和获取的示例如下:3、执行结果 线程根据优先级执行并不根据调用代码的先后。这
关于java中线程(Thread)问题?
1.sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不同访问共享数据。注意该方法要捕获异常 比如有两个线程同时执行(没有Synchronized),一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果...
java线程问题,请高手帮忙
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){...