标签:
* 一个进程可以有多个线程,程序是静态的,进程是动态的
* 线程的主要方法
》start():启动线程,并执行相应的run()方法
》run(): 子线程要执行的代码
》currentThread():静态的,调取当前的线程
》get(set)Name():获取(设置)线程的名字
》yied():调用此方法的线程释放当前CPU的执行权
》Join():在A线程调用B线程的Join方法,表示,当执行此方法是,A停止直至B线程执行完。
》isAlive() : 判断线程是否还存活
》sleep(long l):是当前的线程睡眠l毫秒
》线程的通信:wait(),notify(),notifyAll()
* 设置线程的优先级
》setPriority(int priority),getPriority(),-1 5 10-min normal max
class Window extends Thread{ //如果没有static则,三个各有100,加static三个对象公用100 static int ticket = 100; public void run(){ while(true){ if(ticket>0){ System.out.println(Thread.currentThread().getName()+"售票,票号:" +ticket--); }else { break; } } } } @Test public void test002(){ Window w1 = new Window(); Window w2 = new Window(); Window w3 = new Window(); w1.setName("窗口1"); w2.setName("窗口2"); w3.setName("窗口3"); w1.start(); w2.start(); w3.start(); }
* implements Runable
》启动线程方法
Thread t = new Thread(target);--->t.start();
* extends Thread vs implements Runable
》Thread 本身就实现了Runable接口
》实现的方法由于继承,避免单继承的局限性
》如果多个线程要操作同一份资源或数据,更适合implements
//多个线程共享一个对象 WindowBean w = new WindowBean(); Thread t1 = new Thread(w); Thread t2 = new Thread(w); Thread t3 = new Thread(w); //使用extends的情况 Window w1 = new Window(); Window w2 = new Window(); Window w3 = new Window(); w1.start(); w2.start(); w3.start();
* 线程的同步机制(for safe)
》线程安全(for example:由于一个线程在操作共享数据过程中,在未执行完毕,另外的线程参与进来,导致共享数据存在安全问题)
》如何解决
必须一个县城操作完之后,其他线程才有机会参与共享数据
1.同步代码块
synchronized(同步监视器){
//需要同步的代码块
}
>共享数据,多个线程操作同一个数据
>同步监视器,有一个类的对象充当(任何类,即锁)
>要求,所有的线程必须公用同一个锁
2.同步方法
public synchronized void method(){
//将操作共享数据的方法声明为synchronized,其锁是this。
}
>两个同步方法使用时,extends需要注意this是否为同一锁。
* 死锁的问题
》不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的资源。
* 线程的通信
》wait(),notify(),notifyAll(),必须放在synchronized里。
synchronized (this) { if (num <= 100) { notify(); try { Thread.currentThread().sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ":" + num); num++; } else { break; } try { wait(); } catch (InterruptedException e) { e.printStackTrace(); }
标签:
原文地址:http://www.cnblogs.com/Nyan-Workflow-FC/p/4779539.html