Lorsqu'il verrouille une méthode ou un bloc de code, au plus un thread peut exécuter ce code en même temps. Lorsque deux threads simultanés accèdent à ce bloc de code de synchronisation verrouillé dans le même objet, un seul thread peut être exécuté à la fois. Un autre thread doit attendre que le thread actuel ait fini d'exécuter ce bloc de code avant de pouvoir exécuter ce bloc de code.
La question est alors : si deux threads accèdent à des instances différentes de cet objet, seront-ils toujours bloqués ?
擁有18年軟件開發(fā)和IT教學經(jīng)驗。曾任多家上市公司技術總監(jiān)、架構(gòu)師、項目經(jīng)理、高級軟件工程師等職務。 網(wǎng)絡人氣名人講師,...
synchronisé peut être utilisé des trois manières suivantes
Spécifiez l'objet à verrouiller. Similaire à synchronisé (instance) {}.
Agit directement sur les méthodes d'instance. Cela équivaut à verrouiller l'instance actuelle. Avant d'entrer dans la méthode de synchronisation, vous devez obtenir le verrou de l'instance actuelle.
Agit directement sur les méthodes statiques. Cela équivaut à verrouiller la classe actuelle et à obtenir le verrou de la classe actuelle avant d'entrer dans la méthode de synchronisation.
Pour les 1 et 2 ci-dessus. Le thread doit être bloqué uniquement s'il s'agit du même objet ou de la même instance.
Des verrous sont ajoutés aux instances d'objet. Les verrous ajoutés à différents objets ne s'affecteront pas les uns les autres. Deux threads accédant à deux objets différents ne se bloqueront pas.