eclipse让实现类也添加上接口的注释_多线程:面试常问的两种创建方式,数据共享实现和正确停止线程...
多線程
進程與線程的區別:
進程:程序的執行過程,持有資源(內存)(共享內存和文件)和線程。比如,電腦上的eclipse、QQ、微信等運行中的軟件就是一個進程
線程應用:1、eclipse編輯代碼時,eclipse后臺自動會有語法校驗、源碼編譯
2、QQ聊天時同時可以接收文件
3、一個班級是個進程,那么每個學生就是每個線程
總結:1、線程是系統中最小的執行單元
2、同一個進程可以有多個線程
3、線程共享進程資源
當線程執行wait()時,會把當前的鎖釋放,然后讓出CPU,進入等待狀態。
當執行notify/notifyAll方法時,會喚醒一個處于等待該對象鎖的線程
線程的兩種常用創建方法:
public class T1 extends Thread
{
@Override
public void run()
{
}
}
class T2 implements Runnable{
@Override
public void run()
{
}
}
線程setName和啟動
Thread t1=new T1();
t1.setName("t1");
t1.start();
Thread t2=new Thread(new T2(),"t2");
t2.start();
兩種創建創建線程的區別:
1.Thread類實現了Runnable接口,繼承Thread類就是實現了Runnable接口
2.使用實現Runnable接口的方式創建線程,克服了單繼承的缺點
我覺得區別不大,在寫代碼時,如果這個類需要擴展性你就用實現Runnable接口這種方法,如果這個類不需要擴展性你就要繼承Thread類的方法。
如何實現數據共享:
public class T1 extends Thread
{
private static int ticket=10;//共享的數據只有一份
@Override
public void run()
{
synchronized (this)//必須加
{
for (int i = 0; i < 10; i++)
{
if (ticket>0)
{
System.out.println(Thread.currentThread().getName() + "賣票" + (ticket--));
}
我看了網上好多說實現Runnable接口更容易實現數據共享,我認為不對,很多網上的帖子需要自己實踐才知道對不對,關于數據共享我總結就兩個關鍵點,拿上面那個簡單賣票案例說。
1.關鍵的臨界數據,也就是共享數據ticket,加static關鍵字
2.run()方法中加synchronized關鍵字
只要處理好這兩點就不會出現,本來10張票,n個線程賣了n*10張票
如何停止線程:
1.設置退出標志/開關
2.stop()是一種錯誤的線程退出方法,會顯得程序戛然而止
3.itThread.interrupt();并不是正確的退出方法
總結:正確的線程停止方法就一種設置退出標識
Thread.Interrupt方法只是設置相關線程的中斷標志位,通知目標線程中斷,即該方法只是修改標志位并沒有對真正中斷該線程。所以需要在目標類中手動添加中斷處理邏輯,在發現了中斷信號執行相關邏輯。所以,搞來搞去正確的線程停止方法還是要設置退出標識。
java四種創建的方式:1.Thread 2.Runnable 3.Callable和Future 4.ExecutorService線程池
略作了解,面試可能會問有幾種方法創建線程,盡量多說,著重說前兩個。。。
總結
以上是生活随笔為你收集整理的eclipse让实现类也添加上接口的注释_多线程:面试常问的两种创建方式,数据共享实现和正确停止线程...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小牛照片恢复软件_电脑移动硬盘U盘数据恢
- 下一篇: python如何使用多线程_python