同時制御のまとめ(1)
2717 ワード
1.スレッドを定義する2つの従来の方法.
2.タイマーtimer、timetaskクラス
3.スレッド反発(synchronized)、waitはnotifyと通信する.
4.スレッドデータ共有方式添付ファイル参照(QQピクチャー20140716223607.jpg)
5.ThreadLocalクラス共有スレッド間データ変数.ThreadLocalを用いて共有オブジェクトをカプセル化する(単例の実装のように)
---授業は張孝祥先生から来ました.
package thread;
public class TradionalThreadTest
{
public static void main(String[] args)
{
// 1:new thread
new Thread(){
@Override
public void run()
{
while(true){
System.out.println("current thread( ) is " + Thread.currentThread().getName());
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
// 2:new Runnable ( )
// , run 。
new Thread(new Runnable() {
public void run()
{
while(true){
System.out.println("current thread(runnable) is " + Thread.currentThread().getName());
try
{
Thread.sleep(2000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}){
@Override
public void run()
{
while(true){
System.out.println("current thread( 2) is " + Thread.currentThread().getName());
try
{
Thread.sleep(1000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}.start();
}
}
2.タイマーtimer、timetaskクラス
3.スレッド反発(synchronized)、waitはnotifyと通信する.
4.スレッドデータ共有方式添付ファイル参照(QQピクチャー20140716223607.jpg)
5.ThreadLocalクラス共有スレッド間データ変数.ThreadLocalを用いて共有オブジェクトをカプセル化する(単例の実装のように)
class ThreadScopeStudent{
private String name;
private Long id;
private static ThreadLocal<ThreadScopeStudent> map = new ThreadLocal<ThreadScopeStudent>();
private ThreadScopeStudent(){
}
public static ThreadScopeStudent getThreadStudent(){
ThreadScopeStudent student = map.get();
if(null == student){
student =new ThreadScopeStudent();
map.set(student);
}
return student;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
}
---授業は張孝祥先生から来ました.