Þráður (tölvunarfræði)

Þráður er, í tölvunarfræði, íslensk þýðing á orðinu thread á ensku sem er stytting á thread of execution. Þræðir eru leið fyrir forrit til þess að skipta niður vinnslu sinni í mörg minni verkefni, leysa þau öll „samtímis“ og spara með því tíma og/eða örgjörvavinnslu.

Flestar PC-tölvur í dag hafa reyndar bara einn örgjörva svo þráðavinnsla þykist bara keyra mörg forrit á sama tíma, vinnslutíma örgjörvans er þess í stað skipt niður í smærri einingar. Þessi skipting er útfærð með verkröðun (scheduling) þar sem örgjörvi skiptir (context switch) milli þráða. Þessi skipti gerast svo hratt að notanda finnst eins og öll þau forrit sem hann er að nota keyri á sama tíma. Í raun og veru skiptir örgjörvi svo ört á milli þráða að notandi tekur ekki eftir því.

Einfalt java forrit sem notar þráðavinnslu

Þessi klasi býr til þráðinn „EinfaldurThradur“ þegar kallað er í hann úr keyrsluklasa hér að neðan.

public class EinfaldurThradur extends Thread{    public EinfaldurThradur(String strengur)    {        super(strengur);    }    public void run()    {        for (int i = 1; i < 10; i++) {            System.out.println("Kast númer " + i + " " + getName());            try            {                sleep((int)(Math.random() * 500));            }            catch (InterruptedException e)            {}        }        System.out.println("Upp kom: " + getName());    }}

Þessi klasi býr til þráðinn „EinfaldurThradur“, fyrst með nafninu „Króna“ síðan með nafninu „Skjaldarmerki“.

public class EinfaldurThradurKeyrsla{    public static void main (String[] args)    {        new EinfaldurThradur("Króna").start();        new EinfaldurThradur("Skjaldarmerki").start();    }}

Þetta er útkoman og eins og sést þá skiptast þræðirnir „Króna“ og „Skjaldarmerki“ á að skrifast út.

Kast númer 1 KrónaKast númer 1 SkjaldarmerkiKast númer 2 KrónaKast númer 3 KrónaKast númer 2 SkjaldarmerkiKast númer 4 KrónaKast númer 3 SkjaldarmerkiKast númer 5 KrónaKast númer 4 SkjaldarmerkiKast númer 6 KrónaKast númer 5 SkjaldarmerkiKast númer 7 KrónaKast númer 6 SkjaldarmerkiKast númer 7 SkjaldarmerkiKast númer 8 KrónaKast númer 9 KrónaKast númer 8 SkjaldarmerkiUpp kom: KrónaKast númer 9 SkjaldarmerkiUpp kom: Skjaldarmerki

Hægt er að breyta forritinu og bæta við þráðum á einfaldan hátt. Hér er eins og upp sé kastað tening í stað penings en þá eru búnir til sex þræðir í stað þeirra tveggja sem fyrra dæmið bjó til.

public class EinfaldurThradurKeyrsla2{    public static void main(String[] args)    {        new EinfaldurThradur("Ás").start();        new EinfaldurThradur("Tvistur").start();        new EinfaldurThradur("Þristur").start();        new EinfaldurThradur("Fjarki").start();        new EinfaldurThradur("Fimma").start();        new EinfaldurThradur("Sexa").start();    }}

Hér er útkoman og vinnslan er alveg eins. Eini munurinn er að fleiri þræðir verða til.

Kast númer 1 ÁsKast númer 1 TvisturKast númer 1 ÞristurKast númer 1 FjarkiKast númer 1 FimmaKast númer 1 SexaKast númer 2 SexaKast númer 2 FjarkiKast númer 2 TvisturKast númer 2 ÞristurKast númer 2 ÁsKast númer 3 ÞristurKast númer 3 SexaKast númer 4 ÞristurKast númer 2 FimmaKast númer 3 FjarkiKast númer 4 SexaKast númer 3 FimmaKast númer 3 TvisturKast númer 3 ÁsKast númer 4 ÁsKast númer 5 ÞristurKast númer 5 SexaKast númer 4 FimmaKast númer 4 FjarkiKast númer 5 ÁsKast númer 5 FimmaKast númer 4 TvisturKast númer 6 ÞristurKast númer 5 TvisturKast númer 6 ÁsKast númer 6 TvisturKast númer 6 FimmaKast númer 5 FjarkiKast númer 6 SexaKast númer 7 ÁsKast númer 7 FimmaKast númer 7 ÞristurKast númer 7 TvisturKast númer 7 SexaKast númer 8 ÁsKast númer 8 FimmaKast númer 6 FjarkiKast númer 8 TvisturKast númer 7 FjarkiKast númer 9 ÁsKast númer 8 ÞristurKast númer 9 FimmaKast númer 8 FjarkiKast númer 9 TvisturKast númer 9 ÞristurKast númer 8 SexaUpp kom: TvisturKast númer 9 SexaUpp kom: ÁsKast númer 9 FjarkiUpp kom: FimmaUpp kom: ÞristurUpp kom: SexaUpp kom: Fjarki

Heimildir