Java多線(xiàn)程如何創(chuàng)建多個(gè)線(xiàn)程
Java多線(xiàn)程的同步依靠的是對(duì)象鎖機(jī)制,這個(gè)問(wèn)題需要我們不斷的學(xué)習(xí)相關(guān)的問(wèn)題。下面我們就來(lái)詳細(xì)的學(xué)習(xí)下如何才能更好的進(jìn)行具體內(nèi)容的使用。synchronized關(guān)鍵字的背后就是利用了封鎖來(lái)實(shí)現(xiàn)對(duì)共享資源的互斥訪(fǎng)問(wèn)。
下面以一個(gè)簡(jiǎn)單的實(shí)例來(lái)進(jìn)行對(duì)比分析。實(shí)例要完成的工作非常簡(jiǎn)單,就是創(chuàng)建10個(gè)線(xiàn)程,每個(gè)線(xiàn)程都打印從0到99這100個(gè)數(shù)字,我們希望線(xiàn)程之間不會(huì)出現(xiàn)交叉亂序打印,而是順序地打印。
先來(lái)看***段代碼,這里我們?cè)趓un()方法中加入了synchronized關(guān)鍵字,希望能對(duì)run方法進(jìn)行互斥訪(fǎng)問(wèn),但結(jié)果并不如我們希望那樣,這是因?yàn)檫@里synchronized鎖住的是this對(duì)象,即當(dāng)前運(yùn)行線(xiàn)程對(duì)象本身。Java多線(xiàn)程代碼中創(chuàng)建了10個(gè)線(xiàn)程,而每個(gè)線(xiàn)程都持有this對(duì)象的對(duì)象鎖,這不能實(shí)現(xiàn)線(xiàn)程的同步。
Java多線(xiàn)程代碼如下
- package com.vista;
- class MyThread implements java.lang.Runnable
- {
- private int threadId;
- public MyThread(int id)
- {
- this.threadId = id;
- }
- @Override
- public synchronized void run()
- {
- for (int i = 0; i < 100; ++i)
- {
- System.out.println("Thread ID: " + this.threadId + " : " + i);
- }
- }
- }
- public class ThreadDemo
- {
- /**
- * @param args
- * @throws InterruptedException
- */
- public static void main(String[] args) throws InterruptedException
- {
- for (int i = 0; i < 10; ++i)
- {
- new Thread(new MyThread(i)).start();
- Thread.sleep(1);
- }
- }
- }
以上就是對(duì)Java多線(xiàn)程的詳細(xì)代碼介紹。
【編輯推薦】