Java多線程:線程同步與關鍵字synchronized

一、同步的特性1. 不必同步類中所有的方法, 類可以同時擁有同步和非同步方法.2. 如果線程擁有同步和非同步方法, 則非同步方法可以被多個線程自由訪問而不受鎖的限制. 參見實驗1: http://blog.csdn.net/huang_xw/article/details/73185613. 如果兩個線程要執行一個類中的同步方法, 並且兩個線程使用相同的執行個體來調用方法, 那麼一次只能有一個線程能夠執行方法, 另一個需要等待, 直到鎖被釋放.

Java多線程:線程同步——實驗1

原文地址: http://blog.csdn.net/huang_xw/article/details/7318554/** * @Description: 兩個線程(線程1與線程2)訪問同一個對象的內同步方法syn()與非同步方法nonsyn() * 結果: 線程1訪問對象sameObj的同步方法時, 線程2可以同時訪問對象sameObj的非同步方法. * @author snoopy * @blog http://blog.csdn.net/huang_xw */package

Java多線程之Exchanger

import java.util.concurrent.Exchanger;/** * Exchanger讓兩個線程可以互換資訊。 * 例子中服務生線程往空的杯子裡倒水,顧客線程從裝滿水的杯子裡喝水, * 然後通過Exchanger雙方互換杯子,服務生接著往空杯子裡倒水,顧客接著喝水, * 然後交換,如此周而復始。 */public class ExchangerTest {// 描述一個裝水的杯子public static class Cup{// 標識杯子是否有水private

Java HotSpot Client VM 和 Java HotSpot Server VM的配置

JDK包括2個JVM的實現Java HotSpot Client VM(-client),為在用戶端環境中減少啟動時間而最佳化;Java HotSpot Server VM(-server),為在伺服器環境中最大化程式執行速度而設計。比較:Server VM啟動比Client VM慢,運行比Client VM快。如何將VM設定成 Server VM:找到 [jre安裝目錄]/lib/i386/jvm.cfg 檔案,裡面第一行寫的是 -client

Java多線程:線程同步——實驗4

原文地址: http://blog.csdn.net/huang_xw/article/details/7318554/** * @Description: 兩個線程(線程1與線程2)訪問同一個類的靜態同步方法syn() * 結果: 線程1訪問對象sameObj1的靜態同步方法syn()時, 線程2訪問對象sameObj2中的靜態同步方法syn()阻塞. 或者線程2訪問時, 線程1阻塞. * 結論: 不同線程訪問同一個類的靜態同步方法時, 線程間是互斥的. * @author

Java多線程:線程同步——實驗5

原文地址: http://blog.csdn.net/huang_xw/article/details/7318554/** * @Description: 線程1訪問安全執行緒對象StringBuffer的執行個體, 線程2要訪問時該對象則會出現阻塞現象. * @author snoopy * @blog http://blog.csdn.net/huang_xw */package basic.b_syn;import org.apache.log4j.Logger;public

java socket參數詳解:TcpNoDelay

TcpNoDelay=false,為啟用nagle演算法,也是預設值。 Nagle演算法的立意是良好的,避免網路中充塞小封包,提高網路的利用率。但是當Nagle演算法遇到delayed ACK悲劇就發生了。Delayed ACK的本意也是為了提高TCP效能,跟應答資料捎帶上ACK,同時避免糊塗視窗綜合症,也可以一個ack確認多個段來節省開銷。悲劇發生在這種情況,假設一端發送資料並等待另一端應答,協議上分為頭部和資料,發送的時候不幸地選擇了write-write,然後再read,也就是先發送頭部,

java socket參數詳解:BackLog

輸入串連指示(對串連的請求)的最大隊列長度被設定為 backlog 參數。如果隊列滿時收到串連指示,則拒絕該串連。注意: 1. backlog參數必須是大於 0 的正值。如果傳遞的值等於或小於 0,則假定為預設值。 2. 經過測試這個隊列是按照FIFO(先進先出)的原則。3.

java應用程式Ant通用模板

build.ant<?xml version="1.0" encoding="UTF-8"?><project default="output" basedir="."><tstamp></tstamp><property file="build.properties" /><property file="version.properties" /><property environment="env"

java socket參數詳解:SoTimeout

設定socket調用InputStream讀資料的逾時時間,以毫秒為單位,如果超過這個時候,會拋出java.net.SocketTimeoutException。當輸入資料流的read方法被阻塞時,如果設定timeout(timeout的單位是毫秒),那麼系統在等待了timeout毫秒後會拋出一個InterruptedIOException例外。在拋出例外後,輸入資料流並未關閉,你可以繼續通過read方法讀取資料。當底層的Socket實現不支援SO_TIMEOUT選項時,這兩個方法將拋出Sock

Java多線程:線程同步——實驗2

原文地址: http://blog.csdn.net/huang_xw/article/details/7318554/** * @Description: 兩個線程(線程1與線程2)訪問同一個對象的內同步方法syn * 結果: 線程1訪問對象sameObj的同步方法syn()時, 線程2訪問對象sameObj中的同步方法syn()阻塞. 或者線程2訪問時, 線程1阻塞. * 結論: 不同線程訪問同一個對象的相同同步方法時, 線程間是互斥的. * @author snoopy *

Java多線程:線程同步——實驗3

原文地址: http://blog.csdn.net/huang_xw/article/details/7318554/** * @Description: 兩個線程(線程1與線程2)訪問同一個對象的內同步方法syn1()與同步方法syn2() * 結果: 線程1訪問對象sameObj的同步方法syn1()時, 線程2訪問對象sameObj中的同步方法syn2()阻塞. 或者線程2訪問時, 線程1阻塞. * 結論: 通常知道不同線程訪問同一個對象的相同同步方法時, 線程間是互斥的. *

java IO操作:轉換流–OutputStreamWriter類與InputStreamReader類

整個IO包實際上分為位元組流和字元流,但是除了這兩個流之外,還存在一組位元組流-字元流的轉換類。OutputStreamWriter:是Writer的子類,將輸出的字元流變為位元組流,即將一個字元流的輸出對象變為位元組流輸出對象。InputStreamReader:是Reader的子類,將輸入的位元組流變為字元流,即將一個位元組流的輸入對象變為字元流的輸入對象。如果以檔案操作為例,則記憶體中的字元資料需要通過OutputStreamWriter變為位元組流才能儲存在檔案中,讀取時需要將讀入的位元

Java多線程:線程死結

發生死結的原因一般是兩個對象的鎖相互等待造成的。下面用一個執行個體來構造這種情況:package basic.e_deadlock;import org.apache.log4j.Logger;public class TestDeadLock {public static void main(String[] args) {DeadlockRisk dead = new DeadlockRisk();MyThread t1 = new MyThread(dead, 1, 2,

java IO操作:IO的一般使用原則

一、按資料來源(去向)分類:1 、是檔案:FileInputStream, FileOutputStream, ( 位元組流 )FileReader, FileWriter( 字元 )2 、是 byte[]:ByteArrayInputStream, ByteArrayOutputStream( 位元組流 )3 、是 Char[]: CharArrayReader, CharArrayWriter( 字元流 )4 、是 String: StringBufferInputStream,

java socket參數詳解:KeepAlive

keepalive不是說TCP的常串連,當我們作為服務端,一個用戶端串連上來,如果設定了keeplive為true,當對方沒有發送任何資料過來,超過一個時間(看系統核心參數配置),那麼我們這邊會發送一個ack探測包發到對方,探測雙方的TCP/IP串連是否有效(對方可能斷點,斷網)。如果不設定,那麼用戶端宕機時,伺服器永遠也不知道用戶端宕機了,仍然儲存這個失效的串連。當然,在用戶端也可以使用這個參數。用戶端Socket會每隔段的時間(大約兩個小時)就會利用閒置串連向伺服器發送一個資料包。這個資料包

Java多線程:類Executors主要的Factory 方法

Executors類,提供了一系列Factory 方法用於創先線程池,返回的線程池都實現了ExecutorService介面。1. newFixedThreadPoolpublic static ExecutorService newFixedThreadPool(int nThreads);public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory

Java多線程:類ThreadPoolExecutor詳解

public ThreadPoolExecutor(int corePoolSize,                                       int maximumPoolSize,                                      long keepAliveTime,                                       TimeUnit unit,                                     

Java多線程:線程調度Join

public final void join() throws InterruptedException等待該線程終止。public final void join(long millis) throws InterruptedException等待該線程終止的時間最長為 millis 毫秒。逾時為 0 意味著要一直等下去。 public final void join(long millis, int nanos) throws

How Java Web Servers Work

by Budi Kurniawan         Translated by Javafuns04/23/2003 編輯批註: 本文改編自 Budi 個人出版的關於TOMCAT內部實現原理的書.你可以到他的網站上找到更多這方面的資訊. web server 也叫 Hypertext Transfer Protocol (HTTP) server, 因為它使用的是HTTP協議與用戶端通訊, 通常是指那些 網頁瀏覽器. 基於 Java 的 web server 使用2個重要的類,

總頁數: 4058 1 .... 653 654 655 656 657 .... 4058 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.