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

Java線程和Objec之間的不解之緣

開發(fā) 后端
Java線程在應用的過程中和很多的技術都有牽扯。在不斷的發(fā)展中我們看到,不斷和融合才能在當下的形式中站穩(wěn)。

Java線程在不斷的發(fā)展,發(fā)展的過程中我們需要不斷的學習相關代碼的知識。下面我們就詳細的看看如何進行相關技術信息的學習。在創(chuàng)建啟動Java線程之前,先創(chuàng)建一個線程之間競爭使用的Object對象,然后將這個Object對象的引用傳遞給每一個線程對象的lock成員變量。

這樣一來,每個線程的lock成員都指向同一個Object對象。我們在run方法中,對lock對象使用synchronzied塊進行局部封鎖,這樣就可以讓Java線程去競爭這個***的共享的對象鎖,從而實現(xiàn)同步。

代碼

  1. package com.vista;  
  2. class MyThread implements java.lang.Runnable  
  3. {  
  4. private int threadId;  
  5. private Object lock;  
  6. public MyThread(int id, Object obj)  
  7. {  
  8. this.threadId = id;  
  9. this.lock = obj;  
  10. }  
  11. @Override  
  12. public void run()   
  13. {  
  14. synchronized(lock)  
  15. {  
  16. for (int i = 0; i < 100; ++i)  
  17. {  
  18. System.out.println("Thread ID: " + this.threadId + " : " + i);  
  19. }  
  20. }  
  21. }  
  22. }  
  23. public class ThreadDemo  
  24. {  
  25. /**  
  26. * @param args  
  27. * @throws InterruptedException   
  28. */  
  29. public static void main(String[] args) throws InterruptedException  
  30. {  
  31. Object obj = new Object();  
  32. for (int i = 0; i < 10; ++i)  
  33. {  
  34. new Thread(new MyThread(i, obj)).start();  
  35. Thread.sleep(1);  
  36. }  
  37. }  

 

從第二段代碼可知,同步的關鍵是多個Java線程對象競爭同一個共享資源即可,上面的代碼中是通過外部創(chuàng)建共享資源,然后傳遞到Java線程中來實現(xiàn)。我們也可以利用類成員變量被所有類的實例所共享這一特性,因此可以將lock用靜態(tài)成員對象來實現(xiàn),代碼如下所示:

 

代碼

  1. package com.vista;  
  2. class MyThread implements java.lang.Runnable  
  3. {  
  4. private int threadId;  
  5. private static Object lock = new Object();  
  6. public MyThread(int id)  
  7. {  
  8. this.threadId = id;  
  9. }  
  10. @Override  
  11. public void run()   
  12. {  
  13. synchronized(lock)  
  14. {  
  15. for (int i = 0; i < 100; ++i)  
  16. {  
  17. System.out.println("Thread ID: " + this.threadId + " : " + i);  
  18. }  
  19. }  
  20. }  
  21. }  
  22. public class ThreadDemo   
  23. {  
  24. /**  
  25. * @param args  
  26. * @throws InterruptedException   
  27. */  
  28. public static void main(String[] args) throws InterruptedException  
  29. {  
  30. for (int i = 0; i < 10; ++i)  
  31. {  
  32. new Thread(new MyThread(i)).start();  
  33. Thread.sleep(1);  
  34. }  
  35. }  

 

以上的代碼就是對Java線程的詳細介紹。希望大家有所收獲。

【編輯推薦】

  1. Java線程池如何體現(xiàn)自己的用途
  2. Python編程語言在Java中的使用效果
  3. OSGi要火 IBM和Eclipse將大力發(fā)展Java模塊化
  4. 在敏捷開發(fā)中編寫高質(zhì)量Java代碼
  5. 了解Java日志系統(tǒng)框架的設計與實現(xiàn)
責任編輯:張浩 來源: 互聯(lián)網(wǎng)
相關推薦

2021-06-04 06:32:50

coverallsPython

2010-03-18 19:06:35

Java socket

2023-11-07 12:30:38

數(shù)據(jù)結(jié)構(gòu)紅黑樹

2016-05-27 11:43:06

2013-03-26 10:27:32

社交游戲公司云存儲

2009-02-19 09:48:34

XP微軟降級

2014-10-30 17:43:59

Android 5.0Android Wea

2021-08-02 10:40:45

機器人人工智能算法

2012-05-24 21:36:44

蘋果

2018-06-19 09:54:22

MySQLHBase存儲

2016-09-30 10:30:12

2010-03-10 17:43:41

Python編程語言

2018-11-13 14:41:35

溯源區(qū)塊鏈商場

2016-12-12 14:05:29

戴爾

2017-09-20 14:07:44

2009-03-12 10:52:43

Java線程多線程

2015-07-03 13:38:42

廖廠長

2014-10-30 14:47:37

2010-03-16 17:16:38

Java多線程

2022-05-27 08:16:37

Thread類Runnable接口
點贊
收藏

51CTO技術棧公眾號