Prioridad de subprocesos en Kotlin y Android

Cada subproceso en un proceso tiene una Prioridad . Están en el rango de 1 a 10. Los subprocesos se programan de acuerdo con sus prioridades con la ayuda de un programador de subprocesos .
Puede haber 3 constantes de prioridad establecidas para un subproceso que son:

  • MIN_PRIORITY que equivale a 1
  • MAX_PRIORITY que equivale a 10
  • NORM_PRIORITY que es un valor predeterminado y es igual a 5

A continuación se muestra un código para verificar las prioridades de dos hilos.

Comprobando las prioridades actuales de Threads:

val t1 = Thread(Runnable{
    // Some Activity
})
  
    val t2
    = Thread(Runnable{
        // Some Activity
    })
  
        println("${t1.priority} ${t2.priority}")
Output: 5 5

La salida para ambos subprocesos es la misma que la prioridad predeterminada de un subproceso es 5.
Asignación de nuevas prioridades a los subprocesos:
Debajo de los dos subprocesos se asignan prioridades diferentes. El subproceso t1 se asigna 1 y el subproceso t2 se asigna 10. Dado que el subproceso t1 tiene más prioridad , comenzará primero y los subprocesos restantes de acuerdo con la prioridad. La prioridad puede declararse implícita o explícitamente.

val t1 = Thread(Runnable{
    // Some Activity
})
  
    val t2= Thread(Runnable{
        // Some Activity
    })
  
    t1.priority= 1 
    t2.priority = 10
  
    println("${t1.priority} ${t2.priority}")
Output : 1 10

Lo mismo se puede implementar en una aplicación de Android, a continuación se muestra un ejemplo.
Ejemplo en Android:
intente ejecutar el siguiente programa en Android para verificar las prioridades de dos subprocesos declarados dentro del código. Cuando el usuario hace clic en el botón, comienza el hilo con más prioridad.

package com.example.gfg
  
    import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.TextView
  
    class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
  
                val tv = findViewById<TextView>(R.id.tv)
                val btn1= findViewById<Button>(R.id.btn1)
  
                val t1 = Thread(Runnable{
                tv.text = "t1 had more priority" })
  
                val t2= Thread(Runnable{
                tv.text = "t2 had more priority" })
  
                t1.priority= 1 
                t2.priority = 10
  
               btn1.setOnClickListener{
               when{
                t1.priority < t2.priority -> t1.start() t2.priority < t1.priority -> t2.start() else -> tv.text = 
                 "Both had same priority"
                }
            btn1.isEnabled = false
        }
    }
}

El siguiente código XML es para el diseño.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
    <TextView
        android:id="@+id/tv"
        android:layout_width="200sp"
        android:layout_height="100sp"
        android:gravity="center"
        android:textColor="@color/colorAccent"
        android:background="@color/colorPrimary"
        android:layout_centerInParent="true"
        android:textSize="30sp"
        />
  
  
    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Go"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/tv"
        />
  
  
</RelativeLayout>

Salida :

Publicación traducida automáticamente

Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *