自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何理解Java多線程編程的相關(guān)問題

開發(fā) 后端
Java多線程編程在學(xué)習(xí)的時(shí)候需要我們不斷的介紹。下面我們就看看如何才能更好的進(jìn)行相關(guān)問題的理解。希望大家有所幫助。

Java多線程編程如何才能更好的進(jìn)行相關(guān)語言的使用。下面我們就來看看如何才能更好的使用吧。希望在不斷的使用中更好的將這門語言發(fā)揚(yáng)廣大。那么就來看看相關(guān)問題吧。

一、理解Java多線程編程

Java多線程編程是這樣一種機(jī)制,它允許在程序中并發(fā)執(zhí)行多個(gè)指令流,每個(gè)指令流都稱為一個(gè)線程,彼此間互相獨(dú)立。

線程又稱為輕量級(jí)進(jìn)程,它和進(jìn)程一樣擁有獨(dú)立的執(zhí)行控制,由操作系統(tǒng)負(fù)責(zé)調(diào)度,區(qū)別在于線程沒有獨(dú)立的存儲(chǔ)空間,而是和所屬進(jìn)程中的其它線程共享一個(gè)存儲(chǔ)空間,這使得線程間的通信遠(yuǎn)較進(jìn)程簡(jiǎn)單。#t#

多個(gè)線程的執(zhí)行是并發(fā)的,也就是在邏輯上“同時(shí)”,而不管是否是物理上的“同時(shí)”。如果系統(tǒng)只有一個(gè)CPU,那么真正的“同時(shí)”是不可能的,但是由于CPU的速度非???,用戶感覺不到其中的區(qū)別,因此我們也不用關(guān)心它,只需要設(shè)想各個(gè)線程是同時(shí)執(zhí)行即可。

Java多線程和傳統(tǒng)的單線程在程序設(shè)計(jì)上***的區(qū)別在于,由于各個(gè)線程的控制流彼此獨(dú)立,使得各個(gè)線程之間的代碼是亂序執(zhí)行的,由此帶來的線程調(diào)度,同步等問題,將在以后探討。

二、在Java多線程編程實(shí)現(xiàn)

我們不妨設(shè)想,為了創(chuàng)建一個(gè)新的線程,我們需要做些什么?很顯然,我們必須指明這個(gè)線程所要執(zhí)行的代碼,而這就是在Java中實(shí)現(xiàn)Java多線程我們所需要做的一切!

真是神奇!Java是如何做到這一點(diǎn)的?通過類!作為一個(gè)完全面向?qū)ο蟮恼Z言,Java提供了類java.lang.Thread來方便Java多線程編程,這個(gè)類提供了大量的方法來方便我們控制自己的各個(gè)線程,我們以后的討論都將圍繞這個(gè)類進(jìn)行。

那么如何提供給 Java 我們要線程執(zhí)行的代碼呢?讓我們來看一看 Thread 類。Thread 類最重要的方法是run(),它為Thread類的方法start()所調(diào)用,提供我們的線程所要執(zhí)行的代碼。為了指定我們自己的代碼,只需要覆蓋它!

繼承 Thread 類,覆蓋方法 run(),我們?cè)趧?chuàng)建的 Thread 類的子類中重寫 run() ,加入線程所要執(zhí)行的代碼即可。下面是一個(gè)例子:

 

  1. public class MyThread extends Thread  
  2. {  
  3. int count1, number;  
  4. public MyThread(int num)  
  5. {  
  6. numnumber = num;  
  7. System.out.println  
  8. ("創(chuàng)建線程 " + number);  
  9. }  
  10. public void run() {  
  11. while(true) {  
  12. System.out.println  
  13. ("線程 " + number + ":計(jì)數(shù) " + count);  
  14. if(++count== 6) return;  
  15. }  
  16. }  
  17. public static void main(String args[])  
  18. {  
  19. for(int i = 0;  
  20. i 〈 5; i++) new MyThread(i+1).start();  
  21. }  

 

這種方法簡(jiǎn)單明了,符合大家的習(xí)慣,但是,它也有一個(gè)很大的缺點(diǎn),那就是如果我們的類已經(jīng)從一個(gè)類繼承(如小程序必須繼承自 Applet 類),則無法再繼承 Thread 類,這時(shí)如果我們又不想建立一個(gè)新的類,應(yīng)該怎么辦呢?

我們不妨來探索一種新的方法:我們不創(chuàng)建Thread類的子類,而是直接使用它,那么我們只能將我們的方法作為參數(shù)傳遞給 Thread 類的實(shí)例,有點(diǎn)類似回調(diào)函數(shù)。但是 Java 沒有指針,我們只能傳遞一個(gè)包含這個(gè)方法的類的實(shí)例。

那么如何限制這個(gè)類必須包含這一方法呢?當(dāng)然是使用接口!(雖然抽象類也可滿足,但是需要繼承,而我們之所以要采用這種新方法,不就是為了避免繼承帶來的限制嗎?)
 

責(zé)任編輯:張浩 來源: CSDN
相關(guān)推薦

2010-03-16 19:29:26

Java多線程操作

2009-07-03 17:18:34

Servlet多線程

2023-10-08 09:34:11

Java編程

2010-03-16 10:50:21

Java多線程服務(wù)器

2009-06-11 11:17:59

Java多線程

2009-03-12 10:52:43

Java線程多線程

2023-05-12 14:14:00

Java線程中斷

2009-09-01 17:15:42

C#多線程應(yīng)用

2021-03-05 07:38:52

C++線程編程開發(fā)技術(shù)

2009-06-16 13:48:42

Java多線程

2010-03-17 19:24:38

Java多線程循環(huán)

2013-07-16 10:12:14

iOS多線程多線程概念多線程入門

2009-02-24 08:36:51

多線程線程池網(wǎng)絡(luò)服務(wù)器

2009-07-29 16:42:35

Java多線程編程

2011-07-22 14:55:20

多線程

2018-10-25 15:55:44

Java多線程鎖優(yōu)化

2011-06-13 10:41:17

JAVA

2010-03-16 17:52:27

Java多線程信號(hào)量

2024-05-17 12:56:09

C#編程線程

2023-06-13 13:39:00

多線程異步編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)