Карта сайта

Это автоматически сохраненная страница от 17.09.2013. Оригинал был здесь: http://2ch.hk/b/res/54873663.html
Сайт a2ch.ru не связан с авторами и содержимым страницы
жалоба / abuse: admin@a2ch.ru

Втр 17 Сен 2013 00:10:04
Сап сосач! Выручай товарища

import java.util.*;

/* Общий список
1. Изменить класс Solution так, чтобы он стал списком. (Необходимо реализовать интерфейс java.util.List).
2. Список Solution должен работать только с целыми числами Long.
3. Воспользуйтесь полем original.
4. Список будет использоваться нитями, поэтому позаботьтесь, чтобы все методы были синхронизированы.
*/

public class Solution {
private ArrayList<Long> original = new ArrayList<Long>();
}
сделал так не проходит

package com.javarush.test.level17.lesson10.home01;

import java.util.*;

/* Общий список
1. Изменить класс Solution так, чтобы он стал списком. (Необходимо реализовать интерфейс java.util.List).
2. Список Solution должен работать только с целыми числами Long.
3. Воспользуйтесь полем original.
4. Список будет использоваться нитями, поэтому позаботьтесь, чтобы все методы были синхронизированы.
*/

public class Solution implements List<Long>{
private ArrayList<Long> original = new ArrayList<Long>();
@Override
public synchronized int size()
{
return original.size();
}

@Override
public synchronized boolean isEmpty()
{
return original.isEmpty();
}

@Override
public synchronized boolean contains(Object o)
{
return original.contains(o);
}

@Override
public synchronized Iterator<Long> iterator()
{
return original.iterator();
}

@Override
public synchronized Object[] toArray()
{
return original.toArray();
}

@Override
public synchronized <T> T[] toArray(T[] a)
{
return original.toArray(a);
}

@Override
public synchronized boolean add(Long aLong)
{
return original.add(aLong);
}

@Override
public synchronized boolean remove(Object o)
{
return original.remove(o);
}

@Override
public synchronized boolean containsAll(Collection<?> c)
{
return original.containsAllY;
}

@Override
public synchronized boolean addAll(Collection<? extends Long> c)
{
return original.addAllY;
}

@Override
public synchronized boolean addAll(int index, Collection<? extends Long> c)
{
return original.addAll(index,c);
}

@Override
public synchronized boolean removeAll(Collection<?> c)
{
return original.removeAllY;
}

@Override
public synchronized boolean retainAll(Collection<?> c)
{
return original.retainAllY;
}

@Override
public synchronized void clear()
{
original.clear();
}

@Override
public synchronized Long get(int index)
{
return original.get(index);
}

@Override
public synchronized Long set(int index, Long element)
{
return original.set(index,element);
}

@Override
public synchronized void add(int index, Long element)
{
original.add(index,element);
}

@Override
public synchronized Long remove(int index)
{
return original.remove(index);
}

@Override
public synchronized int indexOf(Object o)
{
return original.indexOf(o);
}

@Override
public synchronized int lastIndexOf(Object o)
{
return original.lastIndexOf(o);
}

@Override
public synchronized ListIterator<Long> listIterator()
{
return original.listIterator();
}

@Override
public synchronized ListIterator<Long> listIterator(int index)
{
return original.listIterator(index);
}

@Override
public synchronized List<Long> subList(int fromIndex, int toIndex)
{
return original.subList(fromIndex,toIndex);
}
}

что нужно сделать что бы всё работало


Втр 17 Сен 2013 00:15:18
>>54873663
Ну хуй знает. ArrayList сам по себе не синхронизирован.

Втр 17 Сен 2013 00:17:02
>>54873955
Посему гугли синхронизацию доступа к ArrayList. Обвешай там все костылями, и будет тебе счастье.

Втр 17 Сен 2013 00:17:55
>>54873955
Ну так то да поэтому везде и втыкаются синхронизации так же был вариант что бы пометить original как volatile но всё равно что то не так

Втр 17 Сен 2013 00:24:14
Есть у кого нибудь какие нибудь идеи по этому посту
ОП

Втр 17 Сен 2013 00:38:25
>>54874401
Так а в чем проблема? Что происходит-то?

Втр 17 Сен 2013 00:45:26
>>54874401
Не пробовал делать блоки синхронизации вместо методов?

Втр 17 Сен 2013 00:46:43
>>54873663
Перепиши на человеческом языке. Например, на хаскеле.

Втр 17 Сен 2013 00:50:24
>>54875409
Да всё равно не прёт

Втр 17 Сен 2013 00:52:28
>>54875603
Что-то мне подсказывает, что суть в использовании тобой слова synchronized при переопределении метода.

Втр 17 Сен 2013 00:54:06
>>54875692
именно по заданию нужно просто сделать что бы работали только с Long и что бы все методы были синхронизированы по идеи этот вариант правильный но не проходит где может быть ошибка

Втр 17 Сен 2013 00:56:04
делай лучше synchronized блоки относительно original
synchronized (original) {} и будет тебе счастье. Если не прокатит - воткни туда ConcurrentArrayList и наеби систему xD

Втр 17 Сен 2013 00:59:08
>>54875843
package com.javarush.test.level17.lesson10.home01;

import java.util.*;

/* Общий список
1. Изменить класс Solution так, чтобы он стал списком. (Необходимо реализовать интерфейс java.util.List).
2. Список Solution должен работать только с целыми числами Long.
3. Воспользуйтесь полем original.
4. Список будет использоваться нитями, поэтому позаботьтесь, чтобы все методы были синхронизированы.
*/

public class Solution implements List<Long>
{
private volatile ArrayList<Long> original = new ArrayList<Long>();

public int size()
{
synchronized (original)
{
return original.size();
}
}

public boolean isEmpty()
{
synchronized (original)
{
return original.isEmpty();
}
}

public boolean contains(Object o)
{
synchronized (original)
{
return original.contains(o);
}
}

public Iterator<Long> iterator()
{
synchronized (original)
{
return original.iterator();
}
}

public Object[] toArray()
{
synchronized (original)
{
return original.toArray();
}
}

public <T> T[] toArray(T[] a)
{
synchronized (original)
{
return original.toArray(a);
}
}

public boolean add(Long aLong)
{
synchronized (original)
{
return original.add(aLong);
}
}

public boolean remove(Object o)
{
synchronized (original)
{
return original.remove(o);
}
}

public boolean containsAll(Collection<?> c)
{
synchronized (original)
{
return original.containsAllY;
}
}

public boolean addAll(Collection<? extends Long> c)
{
synchronized (original)
{
return original.addAllY;
}
}

public boolean addAll(int index, Collection<? extends Long> c)
{
synchronized (original)
{
return original.addAll(index, c);
}
}

public boolean removeAll(Collection<?> c)
{
synchronized (original)
{
return original.removeAllY;
}
}

public boolean retainAll(Collection<?> c)
{
synchronized (original)
{
return original.retainAllY;
}
}

public void clear()
{
synchronized (original)
{
original.clear();
}
}

public Long get(int index)
{
synchronized (original)
{
return original.get(index);

}
}

public Long set(int index, Long element)
{
synchronized (original)
{
return original.set(index, element);

}
}

public void add(int index, Long element)
{
synchronized (original)
{
original.add(index, element);
}
}

public Long remove(int index)
{
synchronized (original)
{
return original.remove(index);
}
}

public int indexOf(Object o)
{
synchronized (original)
{
return original.indexOf(o);
}
}

public int lastIndexOf(Object o)
{
synchronized (original)
{
return original.lastIndexOf(o);
}
}

public ListIterator<Long> listIterator()
{
synchronized (original)
{
return original.listIterator();
}
}

public ListIterator<Long> listIterator(int index)
{
synchronized (original)
{
return original.listIterator(index);
}
}

public List<Long> subList(int fromIndex, int toIndex)
{
synchronized (original)
{
return original.subList(fromIndex, toIndex);
}
}
}

Втр 17 Сен 2013 00:59:37
>>54875986
это тоже не прошло

Втр 17 Сен 2013 01:01:00
>>54873963
Проиграл.

Втр 17 Сен 2013 01:22:12
>>54875986
Чтоа у тебя не получается епта?
Взял твой код, тестанул с помощью
[code="Java"] public static void main(String... args) {
final Solution sol = new Solution();
for (int i = 0; i < 100; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for (int j = 0; j < 10000; j++) {
sol.add((long) j);
}
}
}).start();
}
}
[/code]
Отработал без ошибок (как и ожидалось, если б все было плохо выбросил бы ConcurrentModificationException). Или ты думаешь он тебе кофе варить должен?

Втр 17 Сен 2013 01:24:30
http://pastebin.com/yfmMfkqp
Чего ты ещё хочешь от этого кода?

Втр 17 Сен 2013 01:28:55
>>54876964
Так то оно так но данный лист всё равно не проходит блядского тестирования

Втр 17 Сен 2013 01:39:22
>>54877113
Какого тестирования? Тесты-то покажи

Втр 17 Сен 2013 01:44:45
>>54877524
К тестам нет доступа это курс javarush.ru там на сервере тестится есть вариант то что с тестами косяк


← К списку тредов