ããã°ã©ã èšèª éåæåŠç
ç®æ¬¡
çšèªè§£èª¬
éåæåŠç
è€æ°ã®å¥ã®åŠçãåæã«è¡ãã
ãã«ãã³ã¢ç°å¢(è€æ°ã®CPUã§åŠçãã)ã®å Žåãé«éåããå¯èœæ§ããã
䞊å(䞊è¡)åŠç
åäžã®åŠçãè€æ°ã«åå²ããŠè¡ãã
ããã»ã¹
ããã°ã©ã ã®å®è¡åäœ
ããã»ã¹ã¯ïŒã€ä»¥äžã®ã¹ã¬ãããåºæã®ããŒãã¡ã¢ãªé åçã§æ§æãããã
èµ·åãåãæ¿ãã«æéãæããã
è€æ°ããã»ã¹ã«å¯ŸããåŠçæéã®å²ãåœãŠã¯OSãè¡ãã
å
·äœçã«ã¯ããã»ã¹å
ã®ã¹ã¬ããã«å¯ŸããŠåŠçãå²ãåœãŠãã
ã¹ã¬ãã
CPUã®å©çšåäœ
ã¹ã¬ããåäœã§ã¹ã¿ãã¯ãCPUã¬ãžã¹ã¿ã®ã³ããŒãæã€
ããŒãã¡ã¢ãªé åã¯åäžããã»ã¹å
ã®ã¹ã¬ããã§å
±çšãã
èµ·åãåãæ¿ããéãã
è€æ°ã¹ã¬ããã«å¯ŸããåŠçæéã®å²ãåœãŠã¯OSãè¡ãã
UIã¹ã¬ãã
ïŒã¡ã€ã³ã¹ã¬ãã
â»ãšã³ãã»ãŠãŒã¶ãŒããã®å
¥åãåãä»ããããUIãæç»ãããããã¹ã¬ãã
ã¯ãŒã«ãŒã¹ã¬ãã
UIã¹ã¬ããã®ããã¯ã°ã©ãŠã³ãã§åäœããå¥ã¹ã¬ãã
éåæåŠç(ãã«ãã¹ã¬ãã)ã®ã¡ãªãã
ããã»ã¹ïŒ¡
ãã¹ã¬ããïŒ
ãã¹ã¬ããïŒ
ããã»ã¹ïŒ¢
ãã¹ã¬ããïŒ
ã ãšããã»ã¹ïŒ¡ã®æ¹ãå€ãã®åŠçæéãå²ãåœãŠãããã
ãã£ãŠãã«ãã¹ã¬ããåŠçã¯æçšã
åæå¶åŸ¡
è€æ°ã®ã¹ã¬ãããã¿ã€ãã³ã°ãèšããªãããªãœãŒã¹ã«å¯ŸããŠã¢ã¯ã»ã¹ããäºã
ããªãšã³ããã£ã
ãã«ãã¿ã¹ã¯ããã«ãã¹ã¬ããã®åŠçã«ãããã¹ã±ãžã¥ãŒãªã³ã°æ¹æ³ã®ïŒã€ã
ã¿ã¹ã¯(ã¹ã¬ãã)ãåäœäžã§ããããäžå®æéãçµéãããšåŒ·å¶çã«åŠçãå¥ã¿ã¹ã¯ãžç§»ãã
匷調ç(ãã³ã»ããªãšã³ããã£ã)
åã¿ã¹ã¯ãèªå·±ç³åã§éœåã®è¯ãå ŽæãŸã§åŠçãçµããŠããåŠçãå¥ã¿ã¹ã¯ãžç§»ãã
å®éã«ã¯ã·ã¹ãã ã³ãŒã«ãåŒã³åºãã¿ã€ãã³ã°ã§åŠçãç§»ãããã
倿®µãã£ãŒãããã¯ãã¥ãŒ
ã»çãã¿ã¹ã¯ãåªå
ãã
ã»FIFO(FirstInFirstOut)æ¹åŒã§æåã«ã¹ã±ãžã¥ãŒãªã³ã°ãããã¿ã¹ã¯ãåªå
ãã
çã®åªå
é äœã®éã¿ã«éããããããªãšã³ããã£ãæ¹åŒ
ã¹ã¬ããã»ãŒã
ïŒã€ã®ããŒã¿(ãªããžã§ã¯ã)ã«å¯ŸããŠãè€æ°ã®ã¹ã¬ãããåæã«ã¢ã¯ã»ã¹ããå ŽåãããŒã¿ã®äžæŽåãçºçããã
æä»å¶åŸ¡ãæœãããã®çŸè±¡ãçºçããªãã¯ã©ã¹ã®ããšã
ã¹ã¬ããã»ãŒããªã¯ã©ã¹ã¯ç¶æ¿çŠæ¢ã«ãã¹ãã
æä»å¶åŸ¡åŠçã¯æéãæããçºãç¡çšãªäœ¿çšã¯æ§ããã¹ãã
ã¹ã¿ãã¯
FIFOæ¹åŒã§äœ¿çšããã¡ã¢ãªé åã
ã¹ã¿ãã¯ãã€ã³ã¿(SP)ã¬ãžã¹ã¿ã«ã¹ã¿ãã¯ã®ã¢ãã¬ã¹ãä¿æããäºã§ã
ã¹ã¿ãã¯ã®èªã¿èŸŒã¿å
ãæžã蟌ã¿å
ãå€å®ããã
ããŒã«ã«å€æ°ã颿°ã®æ»ãå
çã«äœ¿çšã
ãã«ãã¹ã¬ããã«ãããã¹ã¿ãã¯å©çš
ã¹ã¬ãããå¥ã«äœæããæ¯ã«ã¹ã¿ãã¯é åã確ä¿ããã(ããã©ã«ãïŒ1MB)ã
ã¹ã¬ããã®åãæ¿ãæã«ã¯CPUã¬ãžã¹ã¿ã®å
容ãéé¿/埩垰ããå¿
èŠãããçºãéé¿çšã¡ã¢ãªé åãå¿
èŠ(ããã©ã«ãïŒ1MB)ã
容éåã³ã確ä¿ã«æéãèŠããã®ã§ãã«ãã¹ã¬ããã¯ã³ã¹ããé«ããšèšãããã
ã¹ã¬ããããŒã«
ã¹ã¬ããçšã®ããã°ã©ã ãä¿æããŠããã¡ã¢ãªé åã
ãã«ãã¹ã¬ããçšã®ã¹ã¿ãã¯é åãç Žæ£ããã«äœ¿ããŸããäºã§å®¹éåã³åŠçæéãççž®ããç®çã§äœ¿çšãããã
.NET4.0以å
ThreadPool.QueueUserWorkItemã¡ãœãããå©çš
(çç¥)
.NET4.0以é
ïŒTaskã¯ã©ã¹ãå©çšããã¹ã¬ãã
å®äŸ
å¥ã¹ã¬ããåŒã³åºã(åŒæ°ç¡ã)
éåæåŠçã¯ã¹ã¬ããããŒã«(Taskã¯ã©ã¹)ã䜿ãã
static void Main(string[] args)
{
ããThreadStartããªã²ãŒãã«ã¡ãœãããæå®
ããThread other1 = new Thread(start: new ThreadStart(OtherThread1));
ããother1.Start();
ãã
ãããã©ã¡ãŒã¿çšThreadStartããªã²ãŒãã«ã¡ãœãããæå®
ããThread other2 = new Thread(start: OtherThread1);
ããother2.Start();
ãã
ããã©ã ãåŒ
ããThread other3 = new Thread(() => OtherThread1());
ããother3.Start();
}
public static void OtherThread1()
{
ããfor (int i = 0; i < 10; i++)
ãã{
ããããConsole.WriteLine(@”Other!”);
ãã}
}
ãéåæåŠç
});
myTask.Start();
new Task( () =>
{
ãéåæåŠç
}).Start();
Task.Run(() =>
{
ãéåæåŠç
});
var ret = Task.Run(() =>
{
ãéåæåŠç
ãreturn 5;
});
ret.ResultïŒ5
{
ãawait Task.Run(() =>
ã{
ããéåæåŠç
ã});
ãreturn @"AAA";
}
var ret = myAsyncAwait().Result;
retïŒAAA
Action func = async () =>
{
ãawait Task.Run(() =>
ã{
ããéåæåŠç
ã});
};
func();
var html = Task.Run(async () => {
ãreturn await new HttpClient().GetStringAsync(@"https://office-yone.com/");
});
html.ResultïŒ<html>ïœ
Windowsã³ã³ãããŒã«ãžã®éåæåŠçåæ
SampleAsync();
Invokeçã®åŠçã¯äžèŠ
public async void SampleAsync() {
ãthis.Windowsã³ã³ãããŒã«.ïœ = "å®è¡äž";
ãawait Task.Run( () => {
ããéåæåŠç
ã} );
ãthis.Windowsã³ã³ãããŒã«.ïœ = "å®äº";
}
ã@Override
ãpublic void run(){
ããtry{
ãããfor (int i=0; i<10; i++){
ããããSystem.out.println( "A" );
ããããThread.sleep(100);
ããã}
ãã}catch(InterruptedException e){
ãããSystem.out.println(e.getMessage());
ãã}
ã}
}
public class ThreadB extends Thread{
ãpublic void run(){
ããtry{
ãããfor (int i=0; i<10; i++){
ããããSystem.out.println( "B" );
ããããThread.sleep(100);
ããã}
ãã}catch(InterruptedException e){
ãããSystem.out.println(e.getMessage());
ãã}
ã}
}
public class App{
ãpublic static void main( String[] args )<{
ããnew ThreadA().start();
ããnew ThreadB().start();
ã}
}
âA B B A A B B A A B A B B A B A B A A B
ãpublic void run(){
ããtry{
ãããfor (int i=0; i<10; i++){
ããããSystem.out.println( "A" );
ããããThread.sleep(100);
ããã}
ãã}catch(InterruptedException e){
ãããSystem.out.println(e.getMessage());
ãã}
ã}
}
public class ThreadB implements Runnable{
ãpublic void run(){
ããtry{
ãããfor (int i=0; i<10; i++){
ããããSystem.out.println( "B" );
ããããThread.sleep(100);
ããã}
ãã}catch(InterruptedException e){
ãããSystem.out.println(e.getMessage());
ãã}
ã}
}
public class App{
ãpublic static void main( String[] args ){
ããnew Thread(new ThreadA()).start();
ããnew Thread(new ThreadB()).start();
ã}
}
âA B B A B A B A A B B A B A B A A B A B
å¥ã¹ã¬ããåŒã³åºã(åŒæ°æã)
éåæåŠçã¯ã¹ã¬ããããŒã«(Taskã¯ã©ã¹)ã䜿ãã
ããã©ã ãåŒ
ããThread other4 = new Thread(() => OtherThread2(@”4″));
ãã//other4.Start();
ããå¿åã¡ãœãã
ããnew Thread(start: delegate()
ãã{
ããããOtherThread2(“5”);
ãã}).Start();
ãããã©ã¡ãŒã¿çšThreadStartããªã²ãŒãã«åŒæ°ãæž¡ã
ããThread other6 = new Thread(start: OtherThread3);
ããother6.Start(parameter: @”6″);
ããfor (int i = 0; i < 10; i++)
ãã{
ããããConsole.WriteLine(@”Main!”);
ãã}
}
static void OtherThread2(string msg)
{
ããfor (int i = 0; i < 10; i++)
ãã{
ããããConsole.WriteLine(msg);
ãã}
ããConsole.ReadKey();
}
static void OtherThread3(object msg)
{
ããâ» ãã©ã¡ãŒã¿çšThreadStartããªã²ãŒãã«åŒæ°ã®åŒæ°ã¯å€æãå¿
èŠ
ããstring myMsg = (string)msg;
ããfor (int i = 0; i < 10; i++)
ãã{
ããããConsole.WriteLine(myMsg);
ãã}
ããConsole.ReadKey();
}
ãprivate String _s;
ãpublic MyThread(String s){
ããthis._s = s;
ã}
ãpublic void run(){
ããSystem.out.println( this._s );
ã}
}
public class App{
ãpublic static void main( String[] args ){
ããnew MyThread("Java").run();
ã}
}
ãprivate String _s;
ãpublic MyThread(String s){
ããthis._s = s;
ã}
ãpublic void run(){
ããSystem.out.println( this._s );
ã}
}
public class App{
ãpublic static void main( String[] args ){
ããnew Thread(new MyThread("Java")).start();
ã}
}
ã¹ã¬ããã®çµäºãåŸ ã€
var myTask = new Task( () =>
{
ãConsole.WriteLine("myTask : start");
ãSystem.Threading.Thread.Sleep(1000);
ãConsole.WriteLine("myTask : end");
});
Console.WriteLine("program : start");
myTask.Start();ãã¿ã¹ã¯éå§
myTask.Wait();ãã¿ã¹ã¯ã®çµäºãåŸ
ã€
Console.WriteLine("program : end");
â
program : start
myTask : start
myTask : end
program : start
éåæåŠçãæåããŠããåŠçãéå§ãã
var myTask = new Task(() =>
{
ãConsole.WriteLine("myTask1 : start");
ãSystem.Threading.Thread.Sleep(5000);
ãConsole.WriteLine("myTask1 : end");
});
myTask.Start();
â ã¹ã¬ããã®çµäºåŸã«éå§
myTask.ContinueWith(_ =>
{
ãConsole.WriteLine(@"myTask was finished.");
});
Console.WriteLine(@"program : end");
â ã¹ã¬ããã®çµäºãåŸ
ããã«å®è¡ãããã
â ã¹ã¬ããã¯éåæ
var myTask = new Task(() =>
{
ãConsole.WriteLine("myTask1 : start");
ãSystem.Threading.Thread.Sleep(5000);
ãConsole.WriteLine("myTask1 : end");
});
myTask.Start();
myTask.ContinueWith(_ =>
{
ãConsole.WriteLine(@"myTask was finished.");
});
â ã¹ã¬ããã®çµäºãåŸ
ã€ã
Task.WaitAll(myTask);
Console.WriteLine(@"program : end");
è€æ°ã®ã¹ã¬ããã®çµäºãåŸ ã€
{
ãConsole.WriteLine("myThread1 : start");
ãSystem.Threading.Thread.Sleep(1000);
ãConsole.WriteLine("myThread1 : end");
});
var myThread2 = new Thread(() =>
{
ãConsole.WriteLine("myThread2 : start");
ãSystem.Threading.Thread.Sleep(2000);
ãConsole.WriteLine("myThread2 : end");
});
Console.WriteLine("program : start");
myThread1.Start();
myThread2.Start();
myThread1.Join();
myThread2.Join();
Console.WriteLine("program : end");
ã¹ã¬ãããïŒã€ãšãçµäºããŠããåŠçããã
â»ã¿ã¹ã¯ã¯ã©ã¹ã䜿çšããå Žå1
using System.Threading.Tasks;
var myTask1 = new Task(() =>
{
ãConsole.WriteLine("myTask1 : start");
ãSystem.Threading.Thread.Sleep(1000);
ãConsole.WriteLine("myTask1 : end");
});
var myTask2 = new Task(() =>
{
ãConsole.WriteLine("myTask2 : start");
ãSystem.Threading.Thread.Sleep(2000);
ãConsole.WriteLine("myTask2 : end");
});
Console.WriteLine("program : start");
myTask1.Start();
myTask2.Start();
Task.WaitAll(myTask1, myTask2);
Console.WriteLine("program : end");
ã¹ã¬ãããïŒã€ãšãçµäºããŠããåŠçããã
â»ã¿ã¹ã¯ã¯ã©ã¹ã䜿çšããå Žå2
using System.Threading.Tasks;
Parallel.Invoke(() =>
{
ãConsole.WriteLine("myTask1 : start");
ãSystem.Threading.Thread.Sleep(1000);
ãConsole.WriteLine("myTask1 : end");
},
() =>
{
ãConsole.WriteLine("myTask2 : start");
ãSystem.Threading.Thread.Sleep(2000);
ãConsole.WriteLine("myTask2 : end");
});
Console.WriteLine("program : end");
ã¹ã¬ãããïŒã€ãšãçµäºããŠããåŠçããã
æä»å¶åŸ¡
è€æ°ã®ã¹ã¬ããããå ±éã®ãªãœãŒã¹(ããŒã¿)ã«ã»ãŒåæã«ã¢ã¯ã»ã¹ããäºã«ããããŒã¿ã®äžæŽåãå¶åŸ¡ããäº
éåæåŠçãããã¯ããªãå Žå
static void myThread(int prm)
{
ãConsole.WriteLine(@"[");
ãThread.Sleep(prm * 1000);
ãConsole.WriteLine(@"]");
}
static void Main(string[] args)
{
ãParallel.Invoke(
ãã() => myThread(prm: 1),
ãã() => myThread(prm: 2)
ã);
}
â [ [ ] ]
éåæåŠçãããã¯ããå Žå
private static object myLock = new object();
static void myThread(int prm)
{
ãlock (myLock)
ã{
ããConsole.WriteLine(@"[");
ããThread.Sleep(prm * 1000);
ããConsole.WriteLine(@"]");
ã}
}
static void Main(string[] args)
{
ãParallel.Invoke(
ãã() => myThread(prm: 1),
ãã() => myThread(prm: 2)
ã);
}
â [ ] [ ]
ãprivate Bathroom room;
ãprivate String name;
ãpublic FamilyTread(Bathroom room, String name) {
ããthis.room = room;
ããthis.name = name;
ã}
ãpublic void run() {
ããthis.room.in(this.name);
ã}
}
public class Bathroom {
ãsynchronizedä»äžã«ãããã¡ãœãããåæåŒã³åºãäžå¯ã«
ãpublic synchronized void in(String name) {
ããSystem.out.println(name + ":enter");
ããtry {
ãããSystem.out.println(name + ":enterd");
ããã3ç§åŸ
æ©
ãããThread.sleep(3000);
ãã} catch (InterruptedException e) {
ããã
ãã}
ããSystem.out.println(name + ":out");
ã}
}
public class Main {
ãpublic static void main(String[] args) {
ããBathroom room = new Bathroom();
ããFamilyTread father = new FamilyTread(room, "ç¶");
ããFamilyTread mother = new FamilyTread(room, "æ¯");
ããFamilyTread sister = new FamilyTread(room, "å§");
ããFamilyTread me = new FamilyTread(room, "èªå");
ããfather.start();
ããmother.start();
ããsister.start();
ããme.start();
ã}
}
çµæïŒsynchronizedç¡
æ¯:enter
ç¶:enter
å§:enter
èªå:enter
å§:enterd
å§:out
ç¶:enterd
ç¶:out
æ¯:enterd
æ¯:out
èªå:enterd
èªå:out
çµæïŒsynchronizedæ
ç¶:enter
ç¶:enterd
ç¶:out
èªå:enter
èªå:enterd
èªå:out
å§:enter
å§:enterd
å§:out
æ¯:enter
æ¯:enterd
æ¯:out
䞊ååŠç
Parallel.For(0, 10, (n) =>
{
ãConsole.WriteLine(n);
});
â0ïœ9ãŸã§æ°åãåºåããããæ¯åçµæãç°ãªã
(åºåã«é¢ããŠäžŠåã§åŠçãè¡ãããŠãã)
ForEachå©çš
var ary = Enumerable.Range(start: 0, count: 10);
Parallel.ForEach(ary, n => {
ãConsole.WriteLine(n);
});
LINQã®äžŠååŠç(PLINQ)
static void Main(string[] args)
{
ãvar oldAry = Enumerable.Range(start: 0, count: 10);
ã
ãvar newAry1 = oldAry.Where(n => n > retNum()).Select(n => n).ToArray();
ãæéã¯æããã0ïœ9ãé çªéãæ ŒçŽããã
ãvar newAry2 = oldAry.Where(n => n > retNum()).AsParallel().Select(n => n).ToArray();
ã0ïœ9ããã©ãã©ã«æ ŒçŽããã(䞊åã§åŠçããã)ã
ãvar newAry3 = oldAry.Where(n => n > retNum()).AsParallel().AsOrdered().Select(n => n).ToArray();
ãæéã¯æããã0ïœ9ãé çªéãæ ŒçŽããã(䞊åã§åŠçãããããœãŒãããã)ã
}
æéãæããŠ0ãè¿ãã ãã®é¢æ°
static int retNum()
{
ãThread.Sleep(millisecondsTimeout: 1000);
ãreturn 0;
}
ã¿ã€ããŒ
ãã©ãŒã ã³ã³ãããŒã«ã®ã¿ã€ããŒãšã¯å¥ã
åŠçã軜ãã
private delegate void _delegate();
â»ãã©ãŒã æäœçš
private System.Threading.Timer _timer();
â»ã¿ã€ããŒãªããžã§ã¯ãã¯å€éšã«ä¿æããŠãããªããšã¬ãŒããŒãžã³ã¬ã¯ã·ã§ã³ã®å¯Ÿè±¡ãšãªã
private void MyForm_Load(object sender, EventArgs e)
{
ãã宿çã«å®è¡ããåŠçãæå®(callBackMethod)
ããTimerCallback timerDelegate = new TimerCallback(callBackMethod);
ãã
ããã¿ã€ããŒå®è¡
ãã_timer = new System.Threading.Timer(
ããããcallback: timerDelegate,ãã
ããããstate: null,
ããããdueTime: 0,
ããããperiod: 1000);
}
宿çã«å®è¡ãããåŠç
private void callBackMethod(object o)
{
ããåŠç
ããåŠç
ãã
ãããã©ãŒã ãæäœããå Žå
ããInvoke(method: new _delegate(method));
}
/è€æ°è¡ã«æž¡ãåŠçãè¡ãå Žå
private void method()
{
ããthis.MyLabel.Text = “ãã©ãŒã æäœ”;
}
IAsyncResultã¯ã©ã¹å©çšã«ããéåæåŠç
å éšçã«ã¹ã¬ããããŒã«ã䜿çšããŠããçºåŠçã軜ããªãã
åºæ¬
delegate string SampleDelegate(int prm1, string prm2);
static void Main(string[] args)
{
ããç§»è²ãªããžã§ã¯ãäœæ
ããSampleDelegate sd = new SampleDelegate(DelegateMethod);
ããéåæåŠçéå§
ããIAsyncResult ar = sd.BeginInvoke(prm1: 100, prm2: @”test”, callback: null, @object: null);
ããéåæåŠççµäº
ããstring result = sd.EndInvoke(result: ar);
}
éåæã§å®è¡ããã(éãã)åŠç
static string DelegateMethod(int prm1, string prm2)
{
ããreturn “”;
}
åŸ ã¡åããã»åŸ æ©
delegate string SampleDelegate(int prm1, string prm2);
static void Main(string[] args)
{
ããç§»è²ãªããžã§ã¯ãäœæ
ããSampleDelegate sd = new SampleDelegate(DelegateMethod);
ããéåæåŠçéå§
ããIAsyncResult ar = sd.BeginInvoke(prm1: 100, prm2: @”test”, callback: null, @object: null);
ããéåæåŠçã2ç§äžæ
ããar.AsyncWaitHandle.WaitOne(millisecondsTimeout: 2000);
ããéåæåŠççµäºãŸã§åŸ
æ©
ããar.AsyncWaitHandle.WaitOne();
ããif (ar.IsCompleted)
ãã{
ããããéåæåŠççµäº
ããããstring result = sd.EndInvoke(result: ar);ããããããã
ãã}
}
éåæã§å®è¡ããã(éãã)åŠç
static string DelegateMethod(int prm1, string prm2)
{
ããreturn “”;
}
ã³ãŒã«ããã¯é¢æ°å©çš
delegate string SampleDelegate(int prm1, string prm2);
static void Main(string[] args)
{
ããç§»è²ãªããžã§ã¯ãäœæ
ããSampleDelegate sd = new SampleDelegate(DelegateMethod);
ããã³ãŒã«ããã¯é¢æ°å®çŸ©
ããAsyncCallback cb = new AsyncCallback(CallBackMethod);
ããéåæåŠçéå§
ããIAsyncResult ar = sd.BeginInvoke(prm1: 100, prm2: @”test”, callback: cb, @object: null);
ããéåæåŠççµäº
ããstring result = sd.EndInvoke(result: ar);
}
éåæã§å®è¡ããã(éãã)åŠç
static string DelegateMethod(int prm1, string prm2)
{
ããConsole.WriteLine(“asynchronous”);
ããConsole.ReadKey();
ããreturn “”;
}
static void CallBackMethod(IAsyncResult ar)
{
ããConsole.WriteLine(“callback”);
ããConsole.ReadKey();
}
ã¹ã¬ããé¢é£ã¡ãœãã/ããããã£
Thread ã€ã³ã¹ã¿ã³ã¹ = new Thread(start: new ThreadStart(ã¡ãœããå));
ã€ã³ã¹ã¿ã³ã¹.Start();
â»å¥ã¹ã¬ããã§èµ·åã§ããã®ã¯æ»ãå€ç¡ããåŒæ°ç¡ãã®ã¡ãœããã®ã¿
ãæ»ãå€ããã©ã¡ãŒã¿ãå©çšããããšãã¯ãåŸè¿°ã®ããªã²ãŒãã䜿çš
ããã¯ã°ã©ãŠã³ãã»ã¹ã¬ãã
ã¡ã€ã³ã®ã¹ã¬ãããçµäºãããšèªèº«ãçµäºããã¹ã¬ãã
ãã©ã¢ã°ã©ãŠã³ãã»ã¹ã¬ãã
ã¡ã€ã³ã®ã¹ã¬ãããçµäºããŠãçµäºããªãã¹ã¬ãã
ããã¯ã°ã©ãŠã³ãã»ã¹ã¬ãããšãã
ã€ã³ã¹ã¿ã³ã¹.IsBackground = true;
åªå
åºŠå€æŽ
ã€ã³ã¹ã¿ã³ã¹.Priority = ThreadPriority.Highest;
ã€ã³ã¹ã¿ã³ã¹.Priority = ThreadPriority.Normal;
ã€ã³ã¹ã¿ã³ã¹.Priority = ThreadPriority.Lowest;
ã¹ã¬ããã®äžæåæ¢
ã€ã³ã¹ã¿ã³ã¹.Suspend();
ã¹ã¬ããã®åé
ã€ã³ã¹ã¿ã³ã¹.Resume();
ã¹ã¬ããã®åŠçãçµäºãããŸã§åŸ
ã€
ã€ã³ã¹ã¿ã³ã¹.Join();
ã¹ã¬ããã®åŒ·å¶çµäº
ã€ã³ã¹ã¿ã³ã¹.Abort();
1ç§éåŸ
ã€
Thread.Sleep(1000);