Форум программистов, компьютерный форум CyberForum.ru

Модификатор synchronized и Runnable - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Прокладка маршрута http://www.cyberforum.ru/android-dev/thread1646444.html
Всем привет. Хочу реализовать приложение для прокладке оптимального маршрута (яндекс метро для примера) для общественного транспорта в своём городе (насиление 500\600 тыс. чел. ) Кто в курсе с чего начать, в смысле дай те направления с чего начать копать? Спасибо
Программирование Android Определение местоположения Только начинаю осваивать программирование для андроида. Английский знаю плохо, поэтому толковой литературы на русском найти не смог :) Вот собственно вопрос: Что необходимо(в техническом и программном плане) и как можно реализовать приложение, которое отслеживает местоположение телефонов на которых установлено. Данные местоположения всех устройств с приложением должны отправляться на сервер... http://www.cyberforum.ru/android-dev/thread1646435.html
Сбой OutOfMemoryError Программирование Android
java.lang.OutOfMemoryError: Failed to allocate a 12960012 byte allocation with 5594672 free bytes and 5MB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609) at...
Программирование Android Потерял код программы, как восстановить из приложения?
Здравствуйте, уважаемые программисты! Мне очень нужна ваша помощь!! Дело в том, что я потерял код своей программы, можно ли его как-то восстановить, если у меня есть она на телефоне, как-то вскрыть ее код? Я пробовал с помощью программы ShowJava, но она очень коряво это делает, непонятно что вообще выдает мне а не код... Заранее большое спасибо!!
Программирование Android Непонятная ошибка http://www.cyberforum.ru/android-dev/thread1646374.html
Error:Error: Duplicate resources: D:\Education\Программы\passwordgenerator\app\src\main\res\drawable\yandex.png:drawable/yandex, D:\Education\Программы\passwordgenerator\app\src\main\res\drawable\yandex.jpg:drawable/yandex абсолютно непонятная ошибка... быть может, вы что-то знаете о ней?.. Заранее спасибо!
Программирование Android Крэшится при запуске. Небольшой и простой код Приложение крэшится при запуске. Что я сделал не так? Также, пользуясь случаем, хочу узнать - как запросить у пользователя при включении приложухи включить bluetooth? Я закомментировал REQUEST_ENABLE_BT , т.к. не понимаю к чему это обращается import android.bluetooth.*; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import... подробнее

Показать сообщение отдельно
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
25.01.2016, 12:55  [ТС]     Модификатор synchronized и Runnable
Цитата Сообщение от YuraAAA Посмотреть сообщение
Этот synchronized вообще никак не влияет.
Так лучше?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class SyncThread implements Runnable{
    private static final Object lock = new Object();        
    
    public void run() {
        synchronized(lock) {
            Log.d("TAG", "run() start");
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            Log.d("TAG", "run() end");
        }
    }
}
Java
1
2
3
4
5
6
        Thread sync_thread = new Thread(new SyncThread());
        sync_thread.start();
        Thread sync_thread2 = new Thread(new SyncThread());
        sync_thread2.start();
        Thread sync_thread3 = new Thread(new SyncThread());
        sync_thread3.start();
Лог:
Bash
1
2
3
4
5
6
D/TAG     (19792): run() start
D/TAG     (19792): run() end
D/TAG     (19792): run() start
D/TAG     (19792): run() end
D/TAG     (19792): run() start
D/TAG     (19792): run() end
Добавлено через 1 час 39 минут
Печаль вся в том, что класс этого потока у меня в отдельном dex лежит и довольно часто в фоне обновляется. Если dex файл перегрузить новый класс этого потока напрочь забудет о синхронизации и о том что его устаревшая копия уже работает он не узнает.

Добавлено через 1 час 36 минут
В итоге сделал вот так:
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
class SyncThread implements Runnable{
    public void run() {
        Set<Thread> all_stack = Thread.getAllStackTraces().keySet();
        for(Thread t : all_stack){
            if(t.getName().contains("SyncThread")){
                t.interrupt();
            }
        }
        Thread ct = Thread.currentThread();
        String tid = String.valueOf(ct.getId());
        ct.setName("SyncThread-" + tid); 
        
        Log.d("TAG", "run() start");
        while(!Thread.interrupted()){
            Log.d("TAG", "run() " + tid + " - " + String.valueOf(ct.getName()));
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                ct.interrupt();
            }
        }
        Log.d("TAG", "run() end");
    }
}
Новый поток тормознет старый, даже если это уже 2 разных класса

Добавлено через 3 минуты
Конечно если их не запускать одновременно, но в моем случае это невозможно
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru