标签: runnable

解释下面的代码是做什么的?

java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
        new NewJFrame().setVisible(true);
    }
});
Run Code Online (Sandbox Code Playgroud)

请告诉我上面代码实际上做了什么.我正在寻找逐行解释.特别是第一行并告诉我为什么我们使用它,在什么情况下我们必须使用它.

java concurrency swing runnable

15
推荐指数
1
解决办法
2万
查看次数

Android:所有runnables的一个处理程序?

我可以在Activity中为所有runnable使用一个处理程序,还是应该有多个Handler实例,每个实例都可以运行一次?

android handler runnable

15
推荐指数
1
解决办法
6000
查看次数

如何在Android中停止处理程序

在我的应用程序中,我使用Gridview创建了一个日历,在Gridview中,我在Imageview的帮助下显示日期和一些事件的可用性,为此,我创建了一个处理程序.

现在我想停止处理程序.

MainActivity.java

// inside oncreate

Handler handler = new Handler();
refreshCalendar();

// outside oncreate

public void refreshCalendar() { 
    calAdapter.refreshDays();
    calAdapter.notifyDataSetChanged();
    handler.post(calendarUpdater);
    calTitle.setText(android.text.format.DateFormat.format("MMMM yyyy", cal));
}
public Runnable calendarUpdater = new Runnable() {

    @Override
    public void run() {
        items.clear();
        allData = new ArrayList<HashMap<String,String>>();
        allData.clear();
        allData = db.showAllEvents();

        String currentDate = (String)android.text.format.DateFormat.format("MM/yyyy", cal);
        for(int i=0; i<allData.size(); i++)
        {
            String date[] = allData.get(i).get("date").split("/");
            String md[] = currentDate.split("/");
            if(date[1].equals(md[0]) && date[2].equals(md[1]))
            {
                items.add(date[0]);
                System.out.println("dates: "+date[0]);
            }
        }
        calAdapter.setItems(items);
        calAdapter.notifyDataSetChanged();
    }
};
Run Code Online (Sandbox Code Playgroud)

请告诉我应该如何以及在哪里禁用此线程.

android handler runnable

14
推荐指数
3
解决办法
4万
查看次数

在后台线程中启动runnable

据我所知,我已经实现了一个在新线程上创建的runnable.但是,该线程似乎并未在后台运行,并且在runnable中执行的操作正在使用大量操作阻止UI.

见下文:

custListLoadThread = new Thread(loadRunnable);
custListLoadThread.run();

private Runnable loadRunnable = new Runnable()
{
    @Override
    public void run()
    {
        android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);

        Gen.popup("TEST"); // Creates a toast pop-up.
        // This is to know if this runnable is running on UI thread or not!

        try
        {               
            customers = Db.BasicArrays.getCustomers(CustomApp.Session.businessCode, empId);

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    populate();
                    setCustListVisible(true);
                    loading = false;
                }
            });
        }
        catch (final Exception ex)
        {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Gen.popup(ex.getMessage());
                }
            });
        } …
Run Code Online (Sandbox Code Playgroud)

multithreading android runnable

14
推荐指数
2
解决办法
2万
查看次数

如何在Mono中使用Runnable for android

我试着勒芒Monodroid!我尝试重写Java代码到C#并遇到一些问题:我不明白如何使用Runnable.这是Java中的代码,我不能转换为C#:

public class RunActivity extends Activity implements OnClickListener
{
   ...

   private Handler mHandler;

   @Override
   public void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.run);
       ... 
       mHandler = new Handler();
       mHandler.postDelayed(mUpdateGeneration, 1000);
   }

   private Runnable mUpdateGeneration = new Runnable()
   {
       public void run()
       {
          mAdapter.next();
          mLifeGrid.setAdapter(mAdapter);

          mHandler.postDelayed(mUpdateGeneration, 1000);
       }
   }; 
   ...
Run Code Online (Sandbox Code Playgroud)

你能解释一下我如何编写这段代码并使用Runnable吗?此Runnable用于更新gridview适配器并在后台从适配器加载数据到gridview.如果我在主线程中尝试更新适配器?像这样(C#代码):

mAdapter.next()
mLifeGrid.Adapter = mAdapter;
Thread.Sleep(1000);
Run Code Online (Sandbox Code Playgroud)

活动停滞不前.如果我不能使用Runnable,我怎样才能在新线程中实现适配器和gridview的更新?如果我使用C#线程,就像这样:

...
Thread th = new Thread(new ThreadStart(mUpdatGeneration));
th.Start();
}
public void mUpdateGeneration()
{
    mAdapter.next()
    mLifeGrid.Adapter = mAdapter;
    Thread.Sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)

它会生成错误"System.NullReferenceException"

感谢所有人的帮助!PS抱歉我的英文:)

c# xamarin.android runnable

13
推荐指数
2
解决办法
1万
查看次数

是否已经有Android的StopWatch类,为什么我的实现不起作用?

最近我看到http://developer.android.com/reference/android/os/CountDownTimer.html,并想知道是否有一个相应的秒表类,因为我想告诉用户我的应用程序他已经尝试解决了多长时间这个谜题.我的意思是自己编程这样的秒表并不复杂.我试过类似的东西

    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            while (true) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                }
                long seconds = (System.currentTimeMillis() - t) / 1000;
                statusBar.setText(String.format("%02d:%02d", seconds / 60, seconds % 60));
            }
        }

    };
    statusBar.post(runnable);
Run Code Online (Sandbox Code Playgroud)

但奇怪的是我的活动的布局不再膨胀,因为我statusBar.post(runnable);在acitivity的onCreate方法结束时有这个意思,这意味着在启动应用程序后我只看到一个白色屏幕而不是正常的gui.

java android timer stopwatch runnable

12
推荐指数
3
解决办法
2万
查看次数

executorService.submit(Runnable)返回的future对象是否包含对runnable对象的任何引用?

我们假设我们有以下代码:

List<Future<?>> runningTasks;
ExecutorService executor;
...
void executeTask(Runnable task){
    runningTasks.add(executor.submit(task));
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 是否runningTasks持有task对象的引用?
  2. 它持有多长时间?任务完成后是否还能保留它?
  3. 为了避免内存泄漏,我是否必须小心删除添加到列表中的未来?

java future executorservice runnable

12
推荐指数
1
解决办法
2754
查看次数

如何使用ScheduledExecutorService更改重复任务的速率或周期?

我有一个蓝牙聊天示例应用程序的修改版本.我已经设置了一个ScheduledExecutorService使用以预定义的速率通过蓝牙发送命令scheduleAtFixedRate.

我已经设置了一个PreferenceActivity允许用户修改时间段.但我不确定如何在更新期间实现重复的实际任务.我需要以ScheduledExecutorService某种方式取消并重新启动吗?

这是我的代码的相关部分.

private ScheduledExecutorService scheduleTaskExecutor;

public long ReadInterval = 1;

...    

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        scheduleTaskExecutor = Executors.newScheduledThreadPool(5);
...
    // This schedule a task to run every 1 second:
    scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
      public void run() {


        // If you need update UI, simply do this:
         runOnUiThread(new Runnable() {
            public void run() {
            // update your UI component here.
              if (connected == true) {
                  sendMessage("READ");                
                  if (D) Log.i(TAG, "In …
Run Code Online (Sandbox Code Playgroud)

java android recurring runnable scheduledexecutorservice

12
推荐指数
1
解决办法
7734
查看次数

Lambda投射规则

我很好奇为什么带有返回类型的lambda不能被转换为a Runnable而非void方法引用可以.

Runnable r1 = () -> 1; // not allowed
// error: incompatible types: bad return type in lambda expression
// int cannot be converted to void

Runnable r2 = ((Supplier)() -> 1)::get; // allowed
Run Code Online (Sandbox Code Playgroud)

java lambda runnable

12
推荐指数
1
解决办法
519
查看次数

Java指派执行程序由于某种原因失败时,停止执行程序服务

我需要某种服务,该服务将在1秒的间隔内同时运行1分钟1分钟。

如果其中一项任务失败,则我想停止该服务,并停止运行该服务的每个任务,并带有某种指示错误的指示器,否则,如果在一分钟后一切正常,则该服务将停止并指示所有指示器均正常运行。

例如,我有2个功能:

Runnable task1 = ()->{
      int num = Math.rand(1,100);
      if (num < 5){
          throw new Exception("something went wrong with this task,terminate");
      }
}

Runnable task2 = ()->{
      int num = Math.rand(1,100)
      return num < 50;
}



ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(2);
task1schedule = scheduledExecutorService.scheduleAtFixedRate(task1, 1, 60, TimeUnit.SECONDS);
task2schedule = scheduledExecutorService.scheduleAtFixedRate(task2, 1, 60, TimeUnit.SECONDS);

if (!task1schedule || !task2schedule) scheduledExecutorService.shutdown();
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题并使之尽可能通用的任何想法?

java concurrency multithreading runnable java-8

12
推荐指数
1
解决办法
270
查看次数