相关疑难解决方法(0)

如何访问正在运行的线程/ runnable?

我有一个线程正在运行,但从外面我不能绕过一个值来停止该线程.如何在内部发送false/true值Mytest()或调用运行线程公共方法?当我按下按钮1?例如:thread.interrupt(); runnable.stop();runnable.start();

// Main
public class Main extends JFrame
{
  public static Runnable runnable;
  public static Thread thread;
  private JButton b1    = new JButton("Start/Stop");

  public void init() 
  {    
    //Execute a job on the event-dispatching thread:
    try {
       javax.swing.SwingUtilities.invokeAndWait(new Runnable() 
       {
         public void run() 
         {
            createGUI();
         }
        });
     } catch (Exception e) { 
       System.err.println("createGUI didn't successfully complete");
     }
  }

  public void createGUI()
  {
    Container cp = getContentPane();
    b1.addActionListener(new button1()); cp.add(b1);
    runnable = new Mytest();
    thread = …
Run Code Online (Sandbox Code Playgroud)

java

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

通过扩展Thread类或实现Runnable来创建线程更合适?

我想知道哪个更适合通过扩展线程类或通过实现Runnable接口来创建线程.为什么?

谢谢..

java multithreading

7
推荐指数
2
解决办法
643
查看次数

使用通过扩展Thread类来创建Thread

可能重复:
Java:"实现Runnable"与"extends Thread"

Java提供了两个创建Thread类的选项,即通过实现Runnable或扩展Thread类.

我知道实现Runnable可能有很多原因,但不确定将Thread类扩展为创建自己的Thread类的场景?

你能否请我提供一些方案,其中扩展线程似乎是可行的或更好的选择或有利...

线程上有一个 问题,但没有回答我的问题

java runnable

7
推荐指数
1
解决办法
1409
查看次数

扩展Thread类的主要优点是什么(或何时扩展Thread而不是实现runnable)

我试图找出扩展Thread类的可能优点是什么?

这是我描述的另一个问题的一部分:在Java中有两种创建线程的方法

  1. 从Thread类扩展
  2. 实现可运行的接口

正如此处所述,使用runnable接口有几个好处.我的问题是从Thread类扩展的优势是什么?我想到的唯一优势是可以从Thread类扩展,让我们称之为ThreadExtended类.然后他/她可以在ThreadExtended中添加更多功能(我不知道它可能是什么),然后当他/她想要创建一个线程,而不是从Thread类扩展时,它从ThreadExtended扩展.

使用Thread类而不是Runnable接口有什么优势吗?您是否知道从Thread类扩展的任何类,然后要求用户从这些类扩展,如果他们想要具有多线程功能?

    public class ThreadExtended extends Thread{
    //override some functions || add more functionality to Thread class
    }

    public class MyThread extends ThreadExtended{
     public void run()
    {
     for(int i=0;i<10;i++)
        {
          System.out.println("Using ThreadExtended instead of Thread directly");
        }
    }

    public static void main(String args[])
    {
    MyThread myThread = new MyThread();
    myThread.start();
    }
    }
Run Code Online (Sandbox Code Playgroud)

java multithreading

7
推荐指数
2
解决办法
8433
查看次数

抽象类与所有方法抽象和接口之间的区别?

我接受采访时,面试官首先问我抽象类与抽象方法和界面之间的区别.

我回答说,如果将来要求继承某些内容,如果你已经扩展了课程,那么你将无法继续.

然后,他说这是一种情况,人们永远不必延长任何其他阶级,你必须实施合同.在这种情况下,哪个更好,一个抽象类或接口?

我告诉他你可以使用其中任何一个,但他不满意.我无法理解为什么 - 我相信这是开发人员/设计选择.

java oop abstract-class interface

6
推荐指数
1
解决办法
902
查看次数

我为什么要使用Runnable而不是Thread?

我只是学习关于线程的理论.还有Thread和Runnable.

class A extends Thread{
    public void run(){
            while(true) {
                System.out.println("Hi");
            }           
        }
    }
Run Code Online (Sandbox Code Playgroud)
class B implements Runnable{
    public void run(){
        System.out.println("Hi");
    }
}
Run Code Online (Sandbox Code Playgroud)

线程很好用丰富的API,为什么我会使用Runnable而不是Thread?

谢谢.

java

6
推荐指数
1
解决办法
1104
查看次数

java线程哪个更好?

在java中创建线程时,有两种方法,如扩展线程和实现可运行的接口.我不知道哪个是更好的创建线程的方法?

java multithreading

5
推荐指数
1
解决办法
788
查看次数

为什么我的可运行给ANR?

我正在尝试实现一个,基于本教程从a SurfaceView调用它的onDraw()方法.在我开始运行以下代码后,我的应用程序正在提供ANR.Thread

我尝试过实现Runnable,而不是扩展Thread但它仍然给出了ANR.

据我所知,当ANR发生时,应用程序上没有其他任何东西在运行.(ANR仅在我添加此代码时才开始发生:)

package com.thunderrabbit.run;

import android.graphics.Canvas;
import android.view.SurfaceHolder;

public class MainThread extends Thread {
    private final String TAG = this.getClass().getSimpleName();

    // desired fps
    private final static int    MAX_FPS = 50;
    // maximum number of frames to be skipped
    private final static int    MAX_FRAME_SKIPS = 5;
    // the frame period
    private final static int    FRAME_PERIOD = 1000 / MAX_FPS;  

    private SurfaceHolder surfaceHolder;
    private PageGLSurfaceView gamePanel; …
Run Code Online (Sandbox Code Playgroud)

android

5
推荐指数
1
解决办法
1653
查看次数

如何在新进程中打开Android Fragment?

我目前正在处理的应用程序使用导航抽屉,每个选项卡在活动中打开一个新片段(替换旧片段).

其中一个片段是Unity3D场景.基本上,我做的是:

  1. 将Unity项目导出为Android应用程序
  2. 打开它给出的Activity(这是UnityPlayerNativeActivity)
  3. 将此UnityPlayerNativeActivity转换为Fragment,如下面的代码所示.我还改变了Manifest中的一些小问题.

    import com.unity3d.player.*;
    import android.app.Fragment;
    import android.app.NativeActivity;
    import android.content.res.Configuration;
    import android.graphics.PixelFormat;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.LayoutInflater;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.WindowManager;
    
    public class UnityPlayerNativeFragment extends Fragment
    {
        protected UnityPlayer mUnityPlayer;     // don't change the name of this variable; referenced from native code
        private static final String ARG_SECTION_NUMBER = "section_number";
    
    public static UnityPlayerNativeFragment newInstance(int sectionNumber) {
        UnityPlayerNativeFragment fragment = new UnityPlayerNativeFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }
    // …
    Run Code Online (Sandbox Code Playgroud)

android process unity-game-engine android-fragments

5
推荐指数
1
解决办法
1273
查看次数

为多个进程运行java runtime.exec()

在我的程序中,我有一个n项目列表.

我将迭代列表并启动这样的过程:

Runtime.getRuntime.exec("cmd /C start abc.bat"+listitem() )
Run Code Online (Sandbox Code Playgroud)

我需要保持4个进程的计数.完成任何一个过程后,我需要启动下一个过程,因此过程计数应为4.

我能够同时启动4个进程,但不确定如何保持4的计数.基本上我需要一个通知,一旦进程终止,所以我可以开始下一个,任何线程都是可能的.

有关如何实现这一点的任何帮助,有人可以分享上述要求的片段吗?

java runtime.exec

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