我們用壹個簡單的例子做個對比分析。例子的任務很簡單,就是創建10個線程,每個線程打印100個從0到99的數字。我們希望線程不會亂序打印,而是按順序打印。
我們來看第壹段代碼。這裏我們在run()方法中加入synchronized關鍵字,希望能夠互斥訪問run方法,但是結果並不像我們希望的那樣,因為這裏的synchronized鎖是this對象,也就是當前運行的線程對象本身。Java多線程代碼中創建的線程有10個,每個線程都持有這個對象的對象鎖,無法實現線程的同步。
Java多線程代碼如下
1 . package com . vista;
2 .類MyThread實現java.lang.Runnable
3.{
4.private int threadId
5 .公共MyThread(int id)
6.{
7 . this . threadid = id;
8.}
9.@覆蓋
10 .公共同步無效運行()
11.{
12 . for(int I = 0;我& lt100;++i)
13.{
14.System.out.println("線程ID:"+this . threadid+":"+I);
15.}
16.}
17.}
18 .公共類ThreadDemo
19.{
20./**
21.* @param args
22.* @throws中斷異常
23.*/
公共靜態void main(String[] args)拋出InterruptedException
25.{
26 . for(int I = 0;我& lt10;++i)
27.{
28 .新線索(新流言(壹))。start();
29.thread . sleep(1);
30.}
31.}
32.}
以上是Java多線程的詳細代碼介紹。