Thread Priority in Kotlin & Android

25 Jun, 2020
Every thread in a process has a Priority. They are in the range of 1 to 10. Threads are scheduled according to their priorities with the help of a Thread Scheduler.There can be 3 priority constant set for a Thread which are:
MIN_PRIORITY which equals to 1
MAX_PRIORITY which equals to 10
NORM_PRIORITY which is a default value and equals to 5
Below is a code to check the priorities of two threads.
Checking the current priorities of Threads:
val t1 = Thread(Runnable{    // Some Activity})      val t2    = Thread(Runnable{        // Some Activity    })          println("${t1.priority} ${t2.priority}")
Output: 5 5

The output for both the threads are same as Default priority of a thread is 5.Assigning new priorities to Threads:Below the two threads are assigned different priorities.Thread t1 is assigned 1 and thread t2 is assigned 10. Since Thread t1 has more priority, it shall start first and the remaining threads according to the priority. The priority can be declared implicitly or explicitly.
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

The same can be implemented in an Android application, below is an example.Example in Android:Try running the below program in Android to check the priorities of two threads declared within the code. When the user clicks the button, the thread with more priority starts.
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        }    }}
The below XML code is for the Layout.
<?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>
Output:
android
Kotlin Android
Kotlin
Operating Systems
Operating Systems
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.