0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 14
1

Сделать потоки для данной программы

26.03.2015, 01:07. Показов 449. Ответов 4
Метки нет (Все метки)

Здравствуйте! Помогите пожалуйста решить задачку.
1) Итерацию, процесс вывода сделать в отдельном потоке.
2)Заморозить поток на 5 секунд перед действием.
3) Синхронизироваться. Запрет на выполнение действий параллельно.


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Scanner;
 
public class kol {
    public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
     
     
    String S = "Сегодня уже ровно 1 месяц как мы не разговариваем, эти 30 дней довольно трудные для меня" ;
 
    String [] SS = S.split("[\\s.,\\-!?]+");
     ArrayList<String> list = new ArrayList<String>(Arrays.asList(SS));
     
     System.out.println(Arrays.toString(SS));
 
   
 
    System.out.println("Введите позицию для начала вывода : ");
 
    int i = s.nextInt();
 
    System.out.println("Общее количество элементов  -  "+list.size());
 
    System.out.println("Введите порядок для вывода элементов \"up\" или \"down\"");
 
    String direction = s.next();
 
 
    if (i < 0 || i >= list.size()) {
        System.out.println("Введите число в интервале от 0 до "+list.size());
    }
 
    else {
        if (direction.equalsIgnoreCase("up")) {
            for (int j = i; j < list.size(); j++) {
                System.out.print(list.get(j)+" ");
            }
        }
 
       else if (direction.equalsIgnoreCase("down")) {
            for (int j = i; j >= 0; j--) {
                System.out.print(list.get(j) + " ");
            }
        }
        else {
            System.out.println("Ошибка ввода");
        }
    }
}}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2015, 01:07
Ответы с готовыми решениями:

Как сделать проверку вводимых чисел через val для данной программы?
Вот собственно сама программа. uses crt; var m,no: array of integer; n,j,i,a,b,k: integer;...

Из данной программы сделать программу с использованием процедур и функций
Помогите пожалуйста! тема:записи и множества условие:Описать, используя структуру данных запись,...

Блок-схема для данной программы
Помоги составить блок схему для данной программы. Program Zadacha; uses crt; var ...

Нужно построить график для данной программы
Вообще не разбираюсь в графиках, нам такого не преподавали, но требуют сделать. Вот УСЛОВИЕ задачи...

4
282 / 262 / 173
Регистрация: 27.07.2014
Сообщений: 584
26.03.2015, 01:52 2
не совсем понял вопрос, но попробовал что-то написать
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class MyThread extends Thread {
    
    private String name;
    private int delay;
    private Thread thread;
    
    
    public MyThread(String name, int delay) {
        this.name = name;
        this.delay = delay;
        thread = new Thread(this);
        thread.start();
    }
 
 
    @Override
    public synchronized void run() {
        
        try {
            Thread.sleep(delay);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        for(int i = 0;i<10;i++) {
            System.out.println(name+" " + i);
        
        }
        
    }
}
 
public class FX  {
        
    
    public static void main(String [] as) {
    
    
        MyThread thread = new MyThread("Second Thread",5000);
        
       
        for(int i=10;i>=0;i--) {
            
            try {
                Thread.sleep(1000);
            }catch(InterruptedException e) {
                e.printStackTrace();
            }
            
            System.out.println("Main Thread " +i);
        }
        }
1
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 14
27.03.2015, 01:37  [ТС] 3
В общем у меня в итоге получилось вот что...И на удивление правильно работает. Но я не создавала отдельный поток для итерации, как его сделать?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package student1;
 
 
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Scanner;
 
public class kol {
    public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
     
     
    String S = "Сегодня уже ровно 1 месяц как мы не разговариваем, эти 30 дней довольно трудные для меня" ;
 
    String [] SS = S.split("[\\s.,\\-!?]+");
     ArrayList<String> list = new ArrayList<String>(Arrays.asList(SS));
     
     System.out.println(Arrays.toString(SS));
 
   
 
    System.out.println("Введите позицию для начала вывода : ");
 
    int i = s.nextInt();
 
    System.out.println("Общее количество элементов  -  "+list.size());
 
    System.out.println("Введите порядок для вывода элементов \"up\" или \"down\"");
 
    String direction = s.next();
    
    
        try {
            Thread.sleep(5000);
        }catch(InterruptedException e) {
            e.printStackTrace();
        }
        
       
    if (i < 0 || i >= list.size()) {
        System.out.println("Введите число в интервале от 0 до "+list.size());
    }
 
    else {
        if (direction.equalsIgnoreCase("up")) {
            for (int j = i; j < list.size(); j++) {
                System.out.print(list.get(j)+" ");
            }
        }
 
       else if (direction.equalsIgnoreCase("down")) {
            for (int j = i; j >= 0; j--) {
                System.out.print(list.get(j) + " ");
            }
        }
        else {
            System.out.println("Ошибка ввода");
        }}}}
получается, что добавлено в программу только вот эти четыре строчки..
Java
1
2
3
4
5
try {
            Thread.sleep(5000);
        }catch(InterruptedException e) {
            e.printStackTrace();
        }
0
Эксперт Java
2377 / 2206 / 561
Регистрация: 28.12.2010
Сообщений: 8,627
27.03.2015, 02:13 4
Цитата Сообщение от maryflame Посмотреть сообщение
3) Синхронизироваться. Запрет на выполнение действий параллельно.
а зачем потоки тогда?
0
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 14
27.03.2015, 19:29  [ТС] 5
Сказали что нужны потоки, но вроде все работает без них, видимо что-то не то(

Добавлено через 16 часов 55 минут
В общем, в итоге получилось вот как, это верно?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package student1;
 
 
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Scanner;
 
public class kol {
    public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
     
     
    String S = "Сегодня уже ровно 1 месяц как мы не разговариваем, эти 30 дней довольно трудные для меня" ;
 
    String [] SS = S.split("[\\s.,\\-!?]+");
     ArrayList<String> list = new ArrayList<String>(Arrays.asList(SS));
     
     System.out.println(Arrays.toString(SS));
 
   
 
    System.out.println("Введите позицию для начала вывода : ");
 
    int i = s.nextInt();
 
    System.out.println("Общее количество элементов  -  "+list.size());
 
    System.out.println("Введите порядок для вывода элементов \"up\" или \"down\"");
 
    String direction = s.next();
    
    {MyThread thread = new MyThread("iterThread", 5000);
   
        
        try {
            Thread.sleep(5000);
        }catch(InterruptedException e) {
            e.printStackTrace();
        }
        
 
    }
    
    
    
    if (i < 0 || i >= list.size()) {
        System.out.println("Введите число в интервале от 0 до "+list.size());
    }
 
    else {
        if (direction.equalsIgnoreCase("up")) {
            for (int j = i; j < list.size(); j++) {
                System.out.print(list.get(j)+" ");
            }
        }
 
       else if (direction.equalsIgnoreCase("down")) {
            for (int j = i; j >= 0; j--) {
                System.out.print(list.get(j) + " ");
            }
        }
        else {
            System.out.println("Ошибка ввода");
        }}}}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package student1;
 
class MyThread extends Thread {
    
    public int delay;
    public String name;
    public Thread thread;
    
    
    public MyThread(String name, int delay) {
        this.delay = delay;
        this.name=name;
        thread = new Thread(this);
        thread.start();
    }
 
 
    public synchronized void run() {
        
        try {
            Thread.sleep(delay);
        } catch (InterruptedException e) {
            e.printStackTrace();
            }}}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2015, 19:29

составьте блок-схему для данной программы:
Var i,n,k,max: Integer; BEGIN Writeln('wwedite 10 chisel: '); k:=0; max:=-MaxInt; For i:=1...

составить блок схему для данной программы
uses crt; const n=5; var a:array of integer; i,j:byte; s:integer; begin clrscr;...

Как заменить getche() на OSX для данной программы
Здравствуйте! Начал изучать с++ по учебнику Лафоре и столкнулся с проблемой. Очень много в...

Создать графический интерфейс для данной программы (GUI)
//A class describes the attributes and behaviors of an object. class testBook { // instance...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.