Member 12729842 Ответов: 1

Как избежать состояния гонки из этого кода?


есть два потока, один поток предназначен для ввода данных для проверки нечетного или четного числа, а другой - для ввода строки, Как избежать состояния гонки.... заранее спасибо

Что я уже пробовал:

import java.util.Scanner;
class Palindrome implements Runnable
{
	Thread t;
	Palindrome()
	{
		t=new Thread(this,"Palindrome");
		t.start();
	}
	
	public void run()
	{
		PalindromeTest();
	}
	synchronized void PalindromeTest()
	{
		
			Scanner sc=new Scanner(System.in);
			System.out.println("Enter a string to check pallindrome : ");
			String s=sc.nextLine();
			String rev="";
			
			int size=s.length()-1;
			for(int i=0;i<=size;i++)
			{
				rev=rev + s.charAt(size-i);
			}
			if(rev.equalsIgnoreCase(s))
				System.out.println("The string is Pallindrome");
			else
				System.out.println("The string is not palindrome");
			notify();

	}
}

class OddEven implements Runnable
{
	Thread t;
	OddEven()
	{
		t=new Thread(this,"Palindrome");

		t.start();
	}
	
	public void run()
	{
		try
		{
			t.wait();
			OddEvenTest();
		}
		catch(InterruptedException e)
		{
			System.out.println(e);
		}
		
	}
	void OddEvenTest()
	{
			if(t.wait())
			{
				t.suspend();
			}
			Scanner sc=new Scanner(System.in);
			System.out.println("Enter a number to check odd or even : ");
			int s=sc.nextInt();
			if(s%2==0)
				System.out.println("The number "+s+ " is even");
			else
				System.out.println("The number "+s+ " is odd");

	}
}

class TestThread
{
	public static void main(String args[])
	{
		new Palindrome();
		new OddEven();
	}
}

1 Ответов

Рейтинг:
0

Patrice T

Цитата:
есть два потока, один поток предназначен для ввода данных для проверки нечетного или четного числа, а другой - для ввода строки, Как избежать состояния гонки.... заранее спасибо
Ваше утверждение является условием гонки по определению, потому что 2 потока принимают входные данные, и каждый вход может быть принят только один раз.

Нет никакого решения этой проблемы.

Все, что вы можете сделать, это подробно объяснить, что вы хотите сделать (не говоря уже о потоках).


Maciej Los

Коротко И По Существу, 5!

Patrice T

Спасибо.

Member 12729842

ppolymorphe прежде всего должен был быть взят вход для integer, но он идет для string?? Я хочу решить эту проблему