Lors d'un bloc de code de verrouillage synchronisé en Java, cette classe doit-elle être un singleton ?
高洛峰
高洛峰 2017-06-28 09:22:12
0
2
955

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年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(2)
Ty80

synchronisé peut être utilisé des trois manières suivantes

  1. Spécifiez l'objet à verrouiller. Similaire à synchronisé (instance) {}.

  2. 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.

  3. 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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal